簡體   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