私は iOS AVFoundation フレームワークを使用しており、画像オーバーレイとテキスト オーバーレイを使用して、ビデオ トラックを正常にマージできます。しかし、私の出力ファイルでは、元のソース ビデオのオーディオがそのまま保持されません。
自分のビデオの 1 つのオーディオ ソースが、作成した新しいビデオに残ることを確認するにはどうすればよいですか?
編集
*このコードを使用して、ビデオ (オリジナルの音声付き) を作成する方法の良い例を示します。AVFoundation でビデオを処理するときに、オーディオ トラックを個別に含める必要があることは明らかではありませんでした。これが他の誰かに役立つことを願っています。
AVAssetTrack *videoTrack = nil;
AVAssetTrack *audioTrack = nil;
CMTime insertionPoint = kCMTimeZero;
if([[url tracksWithMediaType:AVMediaTypeVideo] count] != 0) {
videoTrack = [url tracksWithMediaType:AVMediaTypeVideo][0];
}
if([[url tracksWithMediaType:AVMediaTypeAudio] count] != 0) {
audioTrack = [url tracksWithMediaType:AVMediaTypeAudio][0];
}
// Insert the video and audio tracks from AVAsset
if (videoTrack != nil) {
AVMutableCompositionTrack *compositionVideoTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:videoTrack atTime:insertionPoint error:&error];
}
if (audioTrack != nil) {
AVMutableCompositionTrack *compositionAudioTrack = [videoComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, [url duration]) ofTrack:audioTrack atTime:insertionPoint error:&error];
}