Это код для быстрого 4 работает отлично, чтобы объединить видео в лучшей ориентации
let mainComposition = AVMutableComposition()
let compositionVideoTrack = mainComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid)
let soundtrackTrack = mainComposition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid)
var insertTime = kCMTimeZero
for videoAsset in arrayVideos {
try! compositionVideoTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset.tracks(withMediaType: .video)[0], at: insertTime)
var assetVideoTrack = (videoAsset.tracks(withMediaType: AVMediaType.video)).last as! AVAssetTrack
var compositionVideoTrack = (mainComposition.tracks(withMediaType: AVMediaType.video)).last as! AVMutableCompositionTrack
compositionVideoTrack.preferredTransform = assetVideoTrack.preferredTransform
try! soundtrackTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset.tracks(withMediaType: .audio)[0], at: insertTime)
insertTime = CMTimeAdd(insertTime, videoAsset.duration)
}
let outputFileURL = URL(fileURLWithPath: NSTemporaryDirectory() + "merge1uupo.MOV")
let fileManager = FileManager()
//fileManager.removeItemIfExisted(outputFileURL)
let exporter = AVAssetExportSession(asset: mainComposition, presetName: AVAssetExportPresetHighestQuality)
exporter?.outputURL = outputFileURL
exporter?.outputFileType = AVFileType.mov
exporter?.shouldOptimizeForNetworkUse = true
exporter?.exportAsynchronously {
DispatchQueue.main.async {
// Do what you want at the end
}
}
\ c сохраняет курсор в той же строке после окончания эха, но чтобы включить его, вам нужен флаг -e:
echo -e "bla bla \c"
Я думаю, что попытка состоит в том, чтобы завершить эхо без новой строки.
Если это не работает в вашей системе, вы можете заменить таким образом,
echo "test \c"; echo " same line"
может стать,
echo -n "test"; echo " same line"
Более легкое изменение будет (как предлагается автор Нил
, +1 там),
echo -e "test \c"; echo " same line"
Без автоматического разрыва строки, очевидно :
Использование в оболочках UNIX
Оболочки UNIX Korn используют escape-символ \ c для обозначения продолжения (без автоматического разрыва строки):
echo " Введите путь к файлу данных: \ c "