如何在Linux上使用带有ffmpeg的C ++录制来自USB音频设备的音频?

时间:2017-07-13 07:26:53

标签: c++ linux audio ffmpeg

如何在Linux上使用带有ffmpeg的C ++录制来自USB音频设备的音频? 我有以下代码。但我不知道如何设置' url'的参数。在avformat_open_input的功能。 可以由任何人提供帮助吗?非常感谢。

   27     av_register_all();
   28     avdevice_register_all();
   29
   30     //pAudioInputFmt =av_find_input_format("dshow");
   31     pAudioInputFmt =av_find_input_format("alsa");
   32     //assert(pAudioInputFmt != NULL);
   33     if (!(pAudioInputFmt != NULL))
   34     {
   35         printf("Error %s %d\n", __FILE__, __LINE__);
   36         char ch = cin.get();
   37         cout << "ch = "<< ch << endl;
   38         return (-1);
   39     }
   40
   41     // I have no idear how to set the second parameter on Linux.
   42     if (!(avformat_open_input(&pFmtCtx, "=Device)", pAudioInputFmt,NULL) == 0))
   43     {
   44         printf("Error %s %d\n", __FILE__, __LINE__);
   45         system("pause");
   46         return (-1);
   47     }

1 个答案:

答案 0 :(得分:0)

您是否阅读过this解复音和视频解码的示例?通过仅使用音频部分并过滤掉您不需要的内容,您应该能够录制音频。

另外,执行

时会得到什么
arecord -l

在终端?鉴于你得到像

这样的东西
card x: USB audio

尝试给出&#34; hw:x&#34;作为输入,其中x是arecord -l命令给出的卡号。在我的情况下,USB麦克风是卡1,所以我给&#34; hw:1&#34;作为FFmpeg的输入。