0

我使用video.mp4视频导出audio.caf音频文件并创建一个新的output.mp4作品。 它适用于iOS 5.0,但与iPhone4 4.2.1,组成不会播放音频。使用AVAssetExportSession导出音频+视频,但音频不能在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提前

谢谢!

+0

与问题无关,但我可以问为什么'timeRange'设置为从'0.25'开始而不是'kCMTimeZero'?这是否有特殊的原因? – 2012-05-30 05:08:44

+1

是的,我想上传该视频到Facebook,预览有黑屏。为了避免这种情况,并将“某物”视为预览,我强制1/4秒后才开始播放视频,因此Facebook中的预览不是黑色,而是视频的真实帧。 – nano 2012-06-04 15:13:08

回答

0

我将音频更改为.m4a音频,现在正在工作!

0

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