我使用 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