使用AVAssetExportSession导出音频+视频,但音频未在iphone4 4.2.1中播放

时间:2012-02-14 09:16:09

标签: iphone avfoundation avassetexportsession avmutablecomposition avurlasset

我正在使用video.mp4视频导出audio.caf音频文件并创建一个新的output.mp4组合。 它适用于iOS 5.0,但使用iPhone4 4.2.1时,合成无法播放音频。

NSURL *outputURL = [NSURL fileURLWithPath:outputPath];
AVAssetExportSession* _assetExport = [[AVAssetExportSession alloc] initWithAsset:mixComposition presetName:AVAssetExportPresetMediumQuality];
_assetExport.outputFileType = AVFileTypeQuickTimeMovie;
_assetExport.outputURL = outputURL;
_assetExport.timeRange = CMTimeRangeMake(CMTimeMakeWithSeconds(0.25, 600), videoAsset.duration);
_assetExport.shouldOptimizeForNetworkUse = YES;

[_assetExport exportAsynchronouslyWithCompletionHandler:^{

我已经检查了这部iphone中的原始曲目,两者都没问题,只有乐曲不添加音频。

这就是我将音轨添加到合成中的方式:

NSURL *audioURL = [NSURL fileURLWithPath:audioPath];
AVURLAsset* audioAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
CMTimeRange audio_timeRange = CMTimeRangeMake(CMTimeMake(startRecording_,1), 
                                              audioAsset.duration);

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

[b_compositionAudioTrack insertTimeRange:audio_timeRange ofTrack:[[audioAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0] atTime:kCMTimeZero error:&error];

它适用于许多iOS5设备:S

提前致谢!

2 个答案:

答案 0 :(得分:0)

我将音频更改为.m4a音频,现在正在使用!

答案 1 :(得分:0)

我发现我需要将文件扩展名更改为'mov'然后执行导出(使用PassThrough预设),然后将其更改回mp3(在我的情况下)。看起来像个错误......