使用网络摄像头/HDMI-USB加密狗时,fps低(视频不稳定)、没有声音、图像中没有JPEG数据 [英] Low fps (choppy video), no sound, "No JPEG data found in image" when using webcam/hdmi-usb dongle
问题描述
我花了太长时间才弄明白,所以希望能帮助任何处理这些问题的人,我想发布解决方案。但首先,问题是:
我买了一个便宜的HDMI-&USB加密狗,并将我的PS3连接起来作为视频源。在vlc
上,图像看起来很清晰,但我听不到任何声音,而且视频确实起伏不定。查看信息部分的编解码器选项卡,我看到我以5 fps的速度获得了1080p的效果。我以为我得到了一个有缺陷的加密狗,但决定检查其他应用程序。tvtime
/xawtv
给了我很高的帧速率,但分辨率很低,我无法更改,cheese
允许我设置所有选项,我获得了很好的帧速率和分辨率(但没有声音),然后我最终尝试了obs
,得到了一个完美的结果。因此,很明显,加密狗是正常的,问题出在vlc
。
有关所有这些问题(以及更多问题)的解决方案,请参阅下面的答案
推荐答案
我通过大量的研究和实验发现,视频在vlc
中起伏不定的原因是因为它使用的是YUV2
的默认";chroma
";,如果我没有弄错的话,它是未压缩的。(您可以通过运行以下命令来检查您的网络摄像头/加密狗的能力:v4l2-ctl --list-formats-ext -d /dev/video0
其中/dev/Video0是您的设备)
mjpg
。然而,这导致了大量错误:
[mjpeg @ 0x7f4e0002fcc0] No JPEG data found in image
这是因为默认的分辨率和帧速率(1080p@60fps)超过了我想的MJPEG解码器。将其设置为720p或将帧速率降低到30fps可避免错误。
接下来,声音丢失,这是因为我使用的是pulseaudio
,而VLC无法确定要使用哪个源。
我通过运行:
找到了脉冲源pactl list short sources
结果:
alsa_input.usb-MACROSILICON_USB_Video-02.multichannel-input
您可以通过运行以下命令来测试这是正确的源:
vlc pulse://alsa_input.usb-MACROSILICON_USB_Video-02.multichannel-input
我发现,要组合v4l2
视频源和正确的PulseAudio接收器,您必须通过input-slave
参数将音频设置为VLC,但不幸的是,这不适用于指南中指定的我,而我必须将视频源设置为从属。对我有效的最后几条命令是:
720p:
vlc pulse://alsa_input.YOUR-SOURCE-HERE-input --input-slave=v4l2:///dev/video0:chroma=mjpg:width=1280:height=720
1080p@30fps:
vlc pulse://alsa_input.YOUR-SOURCE-HERE-input --input-slave=v4l2:///dev/video0:chroma=mjpg:fps=30
这篇关于使用网络摄像头/HDMI-USB加密狗时,fps低(视频不稳定)、没有声音、图像中没有JPEG数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!