如何在iOS sdk中的一段时间后添加音频到视频文件?

时间:2014-02-13 10:39:57

标签: ios audio video avurlasset

我正在开发一个视频编辑应用,我必须将音频文件添加到视频,如果我在视频开头添加音频,这项工作正常。

AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
    AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:videoURL options:nil];

    AVMutableComposition* mixComposition = [AVMutableComposition composition];

    AVMutableCompositionTrack *compositionCommentaryTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];


    [compositionCommentaryTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)
    ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:nil];

    AVMutableCompositionTrack *compositionVideoTrack = [mixComposition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];


    [compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)
    ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] atTime:kCMTimeZero error:nil];

    AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition
                                                                          presetName:AVAssetExportPresetPassthrough];

但我想要的是用户可以在任何时间间隔添加音频,即他将视频的前五秒留空,并且仅在五秒后的时间范围内使用音频。

为此,我尝试使用 kCMTimeZero 替换 NewTime ,但声音没有添加:

CCMTime Newtime=CMTimeMakeWithSeconds(3000.0, 600);

[compositionCommentaryTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero, videoAsset.duration)
    ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:Newtime error:nil];

实施方面有什么问题或有其他方法吗?请建议。

1 个答案:

答案 0 :(得分:0)

我有解决方案:

我将CMTime Newtime=CMTimeMakeWithSeconds(3000.0, 600);替换为CMTime Newtime=CMTimeMake(3000, 600);这个并且工作正常。