【发布时间】:2014-03-18 17:42:45
【问题描述】:
我有一个录制的有声视频。将其添加到 AVMutableComposition 然后将其导出时,播放声音时视频将冻结。我错过了什么?
我有我的两条轨道:
_compositionVideoTrack = [self.composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
_compositionAudioTrack = [self.composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
然后创建轨道:
AVAssetTrack *clipVideoTrack = [[sourceAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0];
AVAssetTrack *clipAudioTrack = [[sourceAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0];
然后我插入曲目:
[_compositionVideoTrack insertTimeRange:editRange ofTrack:clipVideoTrack atTime:self.composition.duration error:&editError];
[_compositionAudioTrack insertTimeRange:editRange ofTrack:clipAudioTrack atTime:self.composition.duration error:&editError];
最后我导出它:
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:urlAsset presetName:AVAssetExportPresetPassthrough];
exportSession.outputFileType = AVFileTypeQuickTimeMovie;
文件是 .mp4。会不会是文件格式?
【问题讨论】:
-
视频是否每次都冻结在特定帧上?可能是视频轨道的时间范围不正确。您正在将时间范围从 {clipVideoTrack} 和 {clipAudioTrack} 插入到从合成持续时间开始的合成轨道。
-
声音开始时视频开始冻结。音频和视频不能同时播放。是的,我希望所有添加到伴奏的剪辑都在前一个之后,这就是为什么我将它添加到伴奏的持续时间中。
-
没有看到更多的代码,很难说。我的猜测是,在声音开始时,AVMutableVideoCompositionInstruction 中的 AVMutableVideoCompositionLayerInstructions 的顺序有问题。
-
您找到什么解决方案来解决这个问题?或者你找到了吗?
标签: ios avfoundation avmutablecomposition