fps 低(视频断断续续),没有声音,使用 webcam/hdmi-usb 加密狗时 "No JPEG data found in image"
Low fps (choppy video), no sound, "No JPEG data found in image" when using webcam/hdmi-usb dongle
我花了很长时间才弄明白,所以为了帮助任何人处理这些问题,我想 post 解决方案。但首先是问题:
我买了一个便宜的 HDMI->USB 加密狗并将我的 PS3 连接为视频源。在 vlc
上,图像看起来很清晰,但我听不到声音,而且视频真的很不稳定。检查“信息”部分中的编解码器选项卡,我看到我以 5 fps 的速度获得 1080p。我以为我的加密狗有问题,但决定检查其他应用程序。 tvtime
/xawtv
给了我很好的帧率,但是我无法改变的低分辨率,cheese
允许我设置所有选项,我得到了很好的帧率和分辨率(但没有声音),然后我终于尝试了 obs
这给了我一个完美的结果。很明显加密狗没问题,问题出在 vlc
.
请参阅下面我的回答,了解所有这些问题(以及更多!)的解决方案
通过大量研究和实验,我发现 vlc
中的视频不稳定的原因是它使用了 YUV2
的默认“chroma
”,如果我没看错是解压的。 (您可以通过 运行 检查 webcam/dongle 的功能: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
我花了很长时间才弄明白,所以为了帮助任何人处理这些问题,我想 post 解决方案。但首先是问题:
我买了一个便宜的 HDMI->USB 加密狗并将我的 PS3 连接为视频源。在 vlc
上,图像看起来很清晰,但我听不到声音,而且视频真的很不稳定。检查“信息”部分中的编解码器选项卡,我看到我以 5 fps 的速度获得 1080p。我以为我的加密狗有问题,但决定检查其他应用程序。 tvtime
/xawtv
给了我很好的帧率,但是我无法改变的低分辨率,cheese
允许我设置所有选项,我得到了很好的帧率和分辨率(但没有声音),然后我终于尝试了 obs
这给了我一个完美的结果。很明显加密狗没问题,问题出在 vlc
.
请参阅下面我的回答,了解所有这些问题(以及更多!)的解决方案
通过大量研究和实验,我发现 vlc
中的视频不稳定的原因是它使用了 YUV2
的默认“chroma
”,如果我没看错是解压的。 (您可以通过 运行 检查 webcam/dongle 的功能: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