我有錄製的視頻與聲音。將其添加到AVMutableComposition並將其導出後,視頻將在播放聲音時凍結。我錯過了什麼?AVFoundation 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}的時間範圍插入到合成持續時間開始的合成軌道。 – jlw
聲音開始時視頻開始凍結。音頻和視頻不能同時播放。是的,我希望所有添加到比賽的片段都在之前的片段之後,這就是爲什麼我將它添加到比賽的持續時間。 – Mikael
沒有看到更多的代碼,很難說。我的猜測是AVMutableVideoCompositionInstruction中AVMutableVideoCompositionLayerInstructions在聲音開始時的順序有問題。 – jlw