Jac*_*ord 5 video avfoundation avassetexportsession swift
因此,我已经录制了两个 .mp4 并存储在应用程序中,我想将一个附加到另一个,然后导出为新视频。它有点有效,但不完全有效!
let composition = AVMutableComposition()
var track = composition.addMutableTrack(withMediaType: AVMediaType.video, preferredTrackID:Int32(kCMPersistentTrackID_Invalid))
let videoAsset = AVAsset(url: AAA as URL) as AVAsset
let videoAsset2 = AVAsset(url: BBB as URL) as AVAsset
do {
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset.tracks(withMediaType: AVMediaType.video)[0] as AVAssetTrack, at: kCMTimeZero)
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset2.tracks(withMediaType: AVMediaType.video)[0] as AVAssetTrack, at: kCMTimeZero)
} catch {
print("darn")
}
let exporter = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality)
exporter?.outputURL = CCC
exporter?.outputFileType = AVFileType.mp4
exporter?.shouldOptimizeForNetworkUse = true
exporter?.exportAsynchronously {
print("done?")
}
Run Code Online (Sandbox Code Playgroud)
这种方式组合了视频,但它在两个剪辑之间添加了大量黑屏,并删除了音频。我找不到这个问题的任何最新答案。感谢您的帮助!
视频时间线看起来不正确,例如,您在同一时间点(零)插入两个视频,并且使用了错误的持续时间videoAsset2。
缺少音频是因为您没有在作品中插入任何音轨。
尝试这样的(重复的)片段:
// video
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset.tracks(withMediaType:.video)[0] as AVAssetTrack, at: kCMTimeZero)
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset2.duration), of: videoAsset2.tracks(withMediaType:.video)[0] as AVAssetTrack, at: videoAsset.duration)
// audio
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset.duration), of: videoAsset.tracks(withMediaType:.audio)[0] as AVAssetTrack, at: kCMTimeZero)
try track?.insertTimeRange(CMTimeRangeMake(kCMTimeZero, videoAsset2.duration), of: videoAsset2.tracks(withMediaType:.audio)[0] as AVAssetTrack, at: videoAsset.duration)
Run Code Online (Sandbox Code Playgroud)
免责声明:我不确定使用AVAssetTrack的拥有AVAsset持续时间作为轨道长度的代理是否是一个好习惯。也许你应该使用AVAssetTrack.timeRange.
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |