找出使用 ffmpeg 进行捕获的设备?
Posted
技术标签:
【中文标题】找出使用 ffmpeg 进行捕获的设备?【英文标题】:Find out what device to use for capturing with ffmpeg? 【发布时间】:2013-09-18 22:44:35 【问题描述】:我正在尝试广播我的屏幕,但我无法捕获音频。然而,有一个并发症。我没有pulseaudio
,它根本无法在我的系统上运行,所以安装它是不可能的。以下是我正在尝试的命令:
ffmpeg -f alsa -i ??? -f x11grab -s 1920x1200 -r 15 -i :0.0 \
-acodec pcm_s16le -vcodec libx264 \
-preset fast -pix_fmt yuv420p -s 1280x800 -threads 0 -f flv "$URL"
这是我的音频设备列表:
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=PCH
HDA Intel PCH, ALC269VB Analog
Default Audio Device
sysdefault:CARD=PCH
HDA Intel PCH, ALC269VB Analog
Default Audio Device
front:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
Front speakers
surround40:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=PCH,DEV=0
HDA Intel PCH, ALC269VB Digital
IEC958 (S/PDIF) Digital Audio Output
hdmi:CARD=NVidia,DEV=0
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=1
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=2
HDA NVidia, HDMI 0
HDMI Audio Output
hdmi:CARD=NVidia,DEV=3
HDA NVidia, HDMI 0
HDMI Audio Output
我知道???
应该类似于hw:X,Y
,但也许它可以是别的东西。我在手册页中找不到相应的条目。
顺便说一句,如果您能推荐其他音频编解码器,那就太好了。我找不到有哪些选项,而且这个特定的选项与 FLV 不兼容,因为比特率太高。
PS。这是我得到的错误:
Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input
【问题讨论】:
请添加一些背景数据:操作系统(ffmpeg 在各种操作系统上的行为不同),使用的图形 UI,您是在尝试捕获系统声音,还是从文件中添加?你为什么要为 1280x800 使用 FLV? @DavidJashi os 在标签中指定:它是 Linux,特别是 Fedora Core 18 amd64,KDE 桌面管理器。没有使用图形用户界面。我正在尝试捕捉麦克风。我正在使用 FLV 向 Twitch 广播(它是一个允许实时共享视频的网站,它使用 FLV 来做到这一点,或者有人告诉我)。 使用arecord -l
获取捕获设备列表。
哦,谢谢,@CL。最后我只是查找了cat /proc/asound/cards
,它给了我卡片列表,然后我可以使用hw:card,index
将它引导到正确的设备。就我而言,它是hw:PCH,0
,是的,可以按照您建议的方式找到相同的信息。
您应该始终在您的命令中包含完整的 ffmpeg 控制台输出。
【参考方案1】:
你可以通过 aplay 测试来确定当前活跃的 ALSA 设备,像这样
aplay -vv /path/to/sample.wav
或者,您可以通过在/etc/asound.conf
中设置特定硬件设备来显式配置它
ffmpeg音频编解码器的比特率可以通过-ab
parameter控制
【讨论】:
以上是关于找出使用 ffmpeg 进行捕获的设备?的主要内容,如果未能解决你的问题,请参考以下文章