fru*_*cup 6 avfoundation ios swift
我正在尝试使用AVFoundation加入2个视频片段.出于测试目的,这里我尝试加载单个视频剪辑,将其视频和音频曲目添加到合成中,然后使用导出AVAssetExportSession.
当我运行下面的代码时,输出"Exporting",但永远不会执行导出回调.此外,如果我定期检查export(print(exporter.progress))的进度,我发现进度始终为0.0,即使在几分钟后也是如此.如果我打印状态,我发现它正在"等待"某些东西.
// URL to video file
let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("video.mov")
// Create composition and tracks
let comp = AVMutableComposition()
let videoTrack = comp.addMutableTrack(withMediaType: AVMediaType.video, preferredTrackID: kCMPersistentTrackID_Invalid)
let audioTrack = comp.addMutableTrack(withMediaType: AVMediaType.audio, preferredTrackID: kCMPersistentTrackID_Invalid)
// Create asset from file
let asset = AVAsset(url: fileURL)
// Insert video
try! videoTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, asset.duration), of: asset.tracks(withMediaType: AVMediaType.video)[0] as AVAssetTrack, at: kCMTimeZero)
// Insert audio
try! audioTrack?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, asset.duration), of: asset.tracks(withMediaType: AVMediaType.audio)[0] as AVAssetTrack, at: kCMTimeZero)
// Delete existing movie file if exists
let finalURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent("FINAL.mov")
try? FileManager.default.removeItem(at: finalURL)
// Create the exporter
exporter = AVAssetExportSession(asset: comp, presetName: AVAssetExportPresetLowQuality)
exporter.outputURL = finalURL
exporter.outputFileType = AVFileType.mov
print("Exporting")
exporter.exportAsynchronously(completionHandler: {
// This statement is never reached
print(self.exporter.error)
})
Run Code Online (Sandbox Code Playgroud)
不会抛出任何错误.看起来好像出口永远不会开始.我不确定它在等什么.
编辑:有些怪异的事情正在发生.如果我重新启动手机然后运行代码,它就可以了.但它只运行一次.如果我第二次运行,没有任何事情像往常一样发生.但是,当我重新启动手机并再次运行时,它再次起作用.
编辑2:我在别人的手机上试过它,每次都可以正常工作.我的手机世界上有什么问题?
| 归档时间: |
|
| 查看次数: |
540 次 |
| 最近记录: |