繁体   English   中英

如何在 C++ 中使用 ffmpeg 提取音频形式的视频?

[英]How to extract audio form video using ffmpeg in C++?

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

你需要

  1. 打开输入上下文 [ avformat_open_input ]
  2. 获取流信息 [ avformat_find_stream_info ]
  3. 获取音频流:
if (inputFormatContext->streams[index]->codec->codec_type ==
    AVMEDIA_TYPE_AUDIO) {
  inputAudioStream = inputFormatContext->streams[index];
}
  1. 读取每个数据包。 AVPacket 数据包;
int ret = av_read_frame(inputFormatContext, &packet);
if (ret == 0) {
  if (packet.stream_index == inputAudioStream->index) {
    // packet.data will have encoded audio data.
  }
}

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

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

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

ffmpeg -i infile.mp4 -b 160k outfile.mp3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM