我管理它使用NSUrlConnection下载YouTube视频并将其保存到设备.现在我想将此(我猜.mp4)文件转换为.mp3音频文件.有谁知道这个问题的解决方案?也许有办法只从视频中下载音频?这将节省大量时间.解决方法 首先,你不想转换任何东西,这很慢.而是想要从mp4文件中提取音频流.您可以通过创建仅包含原始文件的音轨的AVMutableComposition,然后使用AVAssetExportSession导出合成来完成此 *** 作.这是目前以m4a为中心的.如果要同时处理m4a和mp3输出,请检查音轨类型,确保设置正确的文件扩展名,并在导出会话中选择AVfileTypeMPEGLayer3或AVfileTypeAppleM4A.
NSURL* dstURL = [NSURL fileURLWithPath:dstPath]; [[NSfileManager defaultManager] removeItemAtURL:dstURL error:nil]; AVMutableComposition* newAudioAsset = [AVMutableComposition composition]; AVMutableCompositionTrack* dstCompositionTrack; dstCompositionTrack = [newAudioAsset addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_InvalID]; AVAsset* srcAsset = [AVURLAsset URLAssetWithURL:srcURL options:nil]; AVAssetTrack* srcTrack = [[srcAsset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]; CMTimeRange timeRange = srcTrack.timeRange; NSError* error; if(NO == [dstCompositionTrack insertTimeRange:timeRange ofTrack:srcTrack atTime:kCMTimeZero error:&error]) { NSLog(@"track insert Failed: %@\n",error); return; } AVAssetExportSession* exportSesh = [[AVAssetExportSession alloc] initWithAsset:newAudioAsset presetname:AVAssetExportPresetPassthrough]; exportSesh.outputfileType = AVfileTypeAppleM4A; exportSesh.outputURL = dstURL; [exportSesh exportAsynchronouslyWithCompletionHandler:^{ AVAssetExportSessionStatus status = exportSesh.status; NSLog(@"exportAsynchronouslyWithCompletionHandler: %i\n",status); if(AVAssetExportSessionStatusFailed == status) { NSLog(@"FAILURE: %@\n",exportSesh.error); } else if(AVAssetExportSessionStatusCompleted == status) { NSLog(@"SUCCESS!\n"); } }];总结
以上是内存溢出为你收集整理的iOS视频到音频文件转换全部内容,希望文章能够帮你解决iOS视频到音频文件转换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)