从.m4v视频文件中提取音频时出错

贾拉尼

我正在尝试从.m4v视频中提取音频文件。它显示错误,

Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not be completed" UserInfo=0x15e350d0 {NSLocalizedDescription=The operation could not be completed, NSUnderlyingError=0x15d1c6b0 "The operation couldn’t be completed. (OSStatus error -12124.)", NSLocalizedFailureReason=An unknown error occurred (-12124)}

这是我的代码:

-(void)extractAudioFromVideo{

    //Create a audia composition and add audio track
    AVMutableComposition *newAudioAsset = [AVMutableComposition composition];
    AVMutableCompositionTrack *dstCompositionTrack = [newAudioAsset addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];

   //Get video asset from which the audio should be extracted
    NSURL *url      = [[NSBundle mainBundle] URLForResource:@"sample_iPod" withExtension:@"m4v"];
    AVAsset *srcAsset  = [AVAsset assetWithURL:url];

    NSArray *trackArray = [srcAsset tracksWithMediaType:AVMediaTypeAudio];
    if(!trackArray.count){
        NSLog(@"Track returns empty array for mediatype AVMediaTypeAudio");
        return;
    }

    AVAssetTrack *srcAssetTrack = [trackArray  objectAtIndex:0];

    //Extract time range
    CMTimeRange timeRange = srcAssetTrack.timeRange;

    //Insert audio from the video to mutable avcomposition track
    NSError *err = nil;
    if(NO == [dstCompositionTrack insertTimeRange:timeRange ofTrack:srcAssetTrack atTime:kCMTimeZero error:&err]){
        NSLog(@"Failed to insert audio from the video to mutable avcomposition track");
        return;
    }

    //Export the avcompostion track to destination path
    NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
    NSString *dstPath = [documentsDirectory stringByAppendingString:@"sample_audio.mp4"];
    NSURL *dstURL = [NSURL fileURLWithPath:dstPath];


    //Remove if any file already exists
    [[NSFileManager defaultManager] removeItemAtURL:dstURL error:nil];

    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:newAudioAsset presetName:AVAssetExportPresetPassthrough];
    NSLog(@"support file types= %@", [exportSession supportedFileTypes]);
    exportSession.outputFileType = @"public.mpeg-4";
    exportSession.outputURL = dstURL;

    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        AVAssetExportSessionStatus status = exportSession.status;

        if(AVAssetExportSessionStatusCompleted != status){
            NSLog(@"Export status not yet completed. Error: %@", exportSession.error.description);
        }
    }];
}

如何解决此错误?

我已经在模拟器中测试了您的代码。在模拟器(IOS7)中工作正常。但是,当我在iPodTouch-5上运行时,它显示的错误就像您提到的一样。花了超过15分钟的时间,发现了愚蠢的错误。

Documentssample_audio.mp4当我在Device中运行时,获取如下所示的路径

@"file:///var/mobile/Applications/A1E1D85F-0198-4A0C-80F8-222F0DA1C31A/Documentssample_audio.mp4"

所以我将路径修改为..

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
NSString *dstPath = [documentsDirectory stringByAppendingString:@"/sample_audio.mp4"];

现在我得到如下所示的路径(/Documents/sample_audio.mp4),并且工作正常。但是我不知道怎么回事

@"file:///var/mobile/Applications/A1E1D85F-0198-4A0C-80F8-222F0DA1C31A/Documents/sample_audio.mp4"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何打开和修复M4V或MP4视频文件?

来自分类Dev

无法更改M4V视频文件的元数据

来自分类Dev

使用 FFMPEG 为 M4v 视频文件添加字幕

来自分类Dev

如何在不对音频和视频进行转码的情况下覆盖M4V文件中的SRT字幕,并删除较旧的字幕

来自分类Dev

从视频文件的特定部分提取/复制音频,可能吗?

来自分类Dev

如何在Windows上从MP4视频文件中提取音轨?

来自分类Dev

如何分割m4v文件?

来自分类Dev

如何从Qt中的视频文件中提取图像?

来自分类Dev

CLI:从视频文件中提取元数据和属性

来自分类Dev

ffmpeg:如何在一个命令行中从视频文件中提取第一视频,英语音频和法语字幕?

来自分类Dev

使用打开的 cv 保存视频文件时出错

来自分类Dev

从Wikipedia文章中提取视频或音频文件的数量

来自分类Dev

Swift:合并音频和视频文件

来自分类Dev

Swift代码使用AVWriter / AVReader从.mp4视频中提取.wav音频,写入零字节文件

来自分类Dev

无法在移动浏览器中提取本地视频文件的持续时间

来自分类Dev

在OS X中从视频文件中提取每一帧作为图像

来自分类Dev

如何使用FFmpeg从视频文件中提取图像而不会模糊?

来自分类Dev

批量合并 mpeg-4 音频文件和视频文件

来自分类Dev

如何将音频从MP4或FLV视频文件转换为mp3?

来自分类Dev

使用mp4box合并不同长度的音频和视频文件

来自分类Dev

如何将音频从MP4或FLV视频文件转换为mp3?

来自分类Dev

使用Ruby从视频中提取音频

来自分类Dev

如何从YouTube视频中提取音频?

来自分类Dev

尝试从zip文件中提取文件时出错

来自分类Dev

从mpeg视频中提取文件

来自分类Dev

在Matlab中从视频中提取音频。音频减速

来自分类Dev

当我使用 ffmpeg 从视频中提取音频时,出现错误

来自分类Dev

将音频/视频文件传递给API

来自分类Dev

查找视频文件中是否包含音频

Related 相关文章

  1. 1

    如何打开和修复M4V或MP4视频文件?

  2. 2

    无法更改M4V视频文件的元数据

  3. 3

    使用 FFMPEG 为 M4v 视频文件添加字幕

  4. 4

    如何在不对音频和视频进行转码的情况下覆盖M4V文件中的SRT字幕,并删除较旧的字幕

  5. 5

    从视频文件的特定部分提取/复制音频,可能吗?

  6. 6

    如何在Windows上从MP4视频文件中提取音轨?

  7. 7

    如何分割m4v文件?

  8. 8

    如何从Qt中的视频文件中提取图像?

  9. 9

    CLI:从视频文件中提取元数据和属性

  10. 10

    ffmpeg:如何在一个命令行中从视频文件中提取第一视频,英语音频和法语字幕?

  11. 11

    使用打开的 cv 保存视频文件时出错

  12. 12

    从Wikipedia文章中提取视频或音频文件的数量

  13. 13

    Swift:合并音频和视频文件

  14. 14

    Swift代码使用AVWriter / AVReader从.mp4视频中提取.wav音频,写入零字节文件

  15. 15

    无法在移动浏览器中提取本地视频文件的持续时间

  16. 16

    在OS X中从视频文件中提取每一帧作为图像

  17. 17

    如何使用FFmpeg从视频文件中提取图像而不会模糊?

  18. 18

    批量合并 mpeg-4 音频文件和视频文件

  19. 19

    如何将音频从MP4或FLV视频文件转换为mp3?

  20. 20

    使用mp4box合并不同长度的音频和视频文件

  21. 21

    如何将音频从MP4或FLV视频文件转换为mp3?

  22. 22

    使用Ruby从视频中提取音频

  23. 23

    如何从YouTube视频中提取音频?

  24. 24

    尝试从zip文件中提取文件时出错

  25. 25

    从mpeg视频中提取文件

  26. 26

    在Matlab中从视频中提取音频。音频减速

  27. 27

    当我使用 ffmpeg 从视频中提取音频时,出现错误

  28. 28

    将音频/视频文件传递给API

  29. 29

    查找视频文件中是否包含音频

热门标签

归档