我使用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提前
谢谢!
与问题无关,但我可以问为什么'timeRange'设置为从'0.25'开始而不是'kCMTimeZero'?这是否有特殊的原因? – 2012-05-30 05:08:44
是的,我想上传该视频到Facebook,预览有黑屏。为了避免这种情况,并将“某物”视为预览,我强制1/4秒后才开始播放视频,因此Facebook中的预览不是黑色,而是视频的真实帧。 – nano 2012-06-04 15:13:08