使用网络摄像头/hdmi-usb 加密狗时,帧率低(视频断断续续)、无声音、“图像中找不到 JPEG 数据”

问题描述 投票:0回答:2

这花了我很长时间才弄清楚,所以为了帮助任何人处理这些问题,我想发布解决方案。但首先,问题是:

我买了一个便宜的 HDMI->USB 适配器,并将我的 PS3 连接为视频源。在

vlc
上,图像看起来很清晰,但我听不到声音,而且视频真的很不稳定。检查“信息”部分中的编解码器选项卡,我看到我以 5 fps 的速度获得 1080p。我以为我的加密狗有缺陷,但决定检查其他应用程序。
tvtime
/
xawtv
给了我很好的帧速率,但分辨率低,我无法更改,
cheese
允许我设置所有选项,并且我获得了良好的帧速率和良好的分辨率(但没有声音),并且然后我终于尝试了
obs
,这给了我一个完美的结果。很明显,加密狗没问题,问题出在
vlc

请参阅下面我的答案,了解所有这些问题(以及更多问题!)的解决方案

vlc v4l2 pulseaudio
2个回答
1
投票

通过大量研究和实验,我发现

vlc
中的视频断断续续的原因是因为它使用了
chroma
的默认“
YUV2
”,如果我没记错的话,它是未压缩的。 (您可以通过运行以下命令来检查网络摄像头/加密狗的功能:
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
视频源与正确的脉冲音频接收器结合起来,您必须通过
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

0
投票

勇敢! Con grande fatica avevo trovato una soluzione più complessa che non semper suonava l'audio and comunque otteneva un conconcente (e variabile!) ritardo con il video. 不是这样的,我们的功能是零噪音音频。 谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.