Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C+中使用ffmpeg从视频中提取音频+;? 我正在开发一个使用FFMPEG播放音频/视频的C++应用程序。现在我想增强应用程序,允许用户从视频中提取音频。FFmpeg如何用于此目的?我对此搜索了很多,但没有找到相关的教程。_C++_Ffmpeg_Libav - Fatal编程技术网

如何在C+中使用ffmpeg从视频中提取音频+;? 我正在开发一个使用FFMPEG播放音频/视频的C++应用程序。现在我想增强应用程序,允许用户从视频中提取音频。FFmpeg如何用于此目的?我对此搜索了很多,但没有找到相关的教程。

如何在C+中使用ffmpeg从视频中提取音频+;? 我正在开发一个使用FFMPEG播放音频/视频的C++应用程序。现在我想增强应用程序,允许用户从视频中提取音频。FFmpeg如何用于此目的?我对此搜索了很多,但没有找到相关的教程。,c++,ffmpeg,libav,C++,Ffmpeg,Libav,这似乎是一个简单的脚本任务。。。你为什么要用重炮(C/C++)打苍蝇 我使用Applescript通过bashshell构建/运行ffmpeg命令行。我使用Applescript的唯一原因是,我可以将其作为一个水滴调用(即将文件拖放到应用程序上,并使其在没有交互的情况下运行) 我知道你可能在Windows上,这意味着没有Applescript和Bash。但肯定有比C更轻的东西可以构建/运行ffmpeg命令行。这其实很简单: ffmpeg -i infile.mp4 -b 160k outfile

这似乎是一个简单的脚本任务。。。你为什么要用重炮(C/C++)打苍蝇

我使用Applescript通过bashshell构建/运行ffmpeg命令行。我使用Applescript的唯一原因是,我可以将其作为一个水滴调用(即将文件拖放到应用程序上,并使其在没有交互的情况下运行)

我知道你可能在Windows上,这意味着没有Applescript和Bash。但肯定有比C更轻的东西可以构建/运行ffmpeg命令行。这其实很简单:

ffmpeg -i infile.mp4 -b 160k outfile.mp3
你需要

  • 打开输入上下文[
    avformat\u Open\u input
    ]
  • 获取流信息[
    avformat\u find\u stream\u info
    ]
  • 获取音频流:
  • 阅读每一包。 数据包
    这个问题很重要。可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息以缩小答案集或隔离可以在几个段落中回答的问题。基本上,我的问题是如何使用ffmpeg lib在c/c++中从视频中提取音频参见官方示例。它将音频帧(经过一些过滤后)传递给stdout。如果你愿意的话,很容易禁用这些编译器。我这样做是为了为我的Android App.OP创建一个本地代码,指出他们正在制作C++应用程序。这个答案一点用都没有。你可以用任何容器格式保存。使用avformat_alloc_output()打开输出格式上下文,以写入模式avio_Open打开文件,使用avformat_write_header()写入头文件,使用av_交错_write_帧写入数据,并使用av_write_尾文件写入尾文件。您也可以参考ffmpeg/muxing.c。我试图使用上面的链接,但行“avformat\u alloc\u output\u context2(&oc,NULL,NULL,filename);”给出了一个未定义的对avformat\u alloc\u output\u context2的引用错误。您可以编写伪代码,以便我可以编写正确的c代码吗,完整的例子,让每个人都更容易遵循。
    if (inputFormatContext->streams[index]->codec->codec_type ==
        AVMEDIA_TYPE_AUDIO) {
      inputAudioStream = inputFormatContext->streams[index];
    }
    
    int ret = av_read_frame(inputFormatContext, &packet);
    if (ret == 0) {
      if (packet.stream_index == inputAudioStream->index) {
        // packet.data will have encoded audio data.
      }
    }