ffmpeg ALSA 音频捕获不起作用

Sim*_*her 4 audio linux ffmpeg alsa

我在 linux mint 17.2 上使用 ffmpeg 的静态二进制文件 ( http://johnvansickle.com/ffmpeg/ )。当我尝试使用以下命令捕获音频时:

ffmpeg -f alsa -ac 2 -i hw:0 output.wav
Run Code Online (Sandbox Code Playgroud)

我最终出现以下错误:

ALSA lib ../../src/conf.c:3325:(snd_config_hooks_call) Cannot open shared library libasound_module_conf_pulse.so
ALSA lib ../../../src/pcm/pcm.c:2267:(snd_pcm_open_noupdate) Unknown PCM hw:0
[alsa @ 0x43e7200] cannot open audio device hw:0 (No such file or directory)
hw:0: Input/output error
Run Code Online (Sandbox Code Playgroud)

根据其他来源的建议,我成功重新安装了以下软件包(因为它们已经安装),但最终出现了相同的错误:

sudo apt-get install --reinstall libasound2:amd64 libasound2-plugins:amd64
sudo apt-get install --reinstall libasound2:i386 libasound2-plugins:i386
Run Code Online (Sandbox Code Playgroud)

我可以成功使用aplay(不知道是否有什么问题):

aplay /usr/share/sounds/alsa/Front_Center.wav
Run Code Online (Sandbox Code Playgroud)

我知道一个事实,libasound_module_conf_pulse.so和朋友位于我的电脑上,并且位于此处:

/usr/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
/usr/lib/x86_64-linux-gnu/alsa-lib/libasound_module_conf_pulse.so
Run Code Online (Sandbox Code Playgroud)

那么问题出在哪里呢?我只想做一个简单的屏幕截图,现在我的日子已经过去了:(。我确实觉得 ffmpeg 错误吐出相对路径很奇怪../../src/conf.c:3325(有什么问题吗?)。

kwa*_*ash 5

这些是完全静态的构建,因此它们不依赖于系统共享库,因此调整系统中的某些内容是没有用的。不幸的是,它们并不是针对脉冲而构建的。这意味着,按照它们提供的方式,您无法使用脉冲/alsa 录制音频,除非作者在这些版本的下一个版本中添加了脉冲支持。

另一种解决方案是自己构建。这并不难。FFmpeg 网站上有一个简单的指南:https ://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu 。在最后一步中将“--enable-libpulse”添加到 FFmpeg 配置脚本中。