ffmpeg ALSA 音频捕获不起作用

ffmpeg ALSA 音频捕获不起作用

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

ffmpeg -f alsa -ac 2 -i hw:0 output.wav

我最终遇到以下错误:

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

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

sudo apt-get install --reinstall libasound2:amd64 libasound2-plugins:amd64
sudo apt-get install --reinstall libasound2:i386 libasound2-plugins:i386

我可以成功使用aplay(我不知道这是否有任何问题):

aplay /usr/share/sounds/alsa/Front_Center.wav

我确实知道我的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

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

答案1

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

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

答案2

Ask Ubuntu 帖子中也提到了同样的错误
尽管文件存在,但无法打开共享 libasound 库

我复制如下 回答 这或许是最有可能解决问题的方法:

首先创建Error中给出的调用环境:

就我而言: ALSA lib conf.c:3725:(snd_config_hooks_call) 无法打开共享库 libasound_module_conf_pulse.so (/lib/i386-linux-gnu/alsa-lib/libasound_module_conf_pulse*.so: 无法打开共享对象文件:没有此文件或目录) ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) 未知的 PCM 默认值

运行以下命令:

sudo mkdir /usr/lib/i386-linux-gnu/alsa-lib/
cd /usr/lib/i386-linux-gnu/alsa-lib/
sudo dpkg --add-architecture i386
sudo apt-get install libasound2-plugins:i386

相关内容