我购买了 Hauppauge USB-Live 2 捕获设备,因为最近的几篇亚马逊评论表明它应该适用于现代 Linux 内核。
当我将它插入运行最新版本的 Raspbian Buster 的 Raspberry Pi 4 时,它似乎被成功识别:
- 这是 dmesg 输出:https://pastebin.com/kybfrpJH
- v4l2-ctl --all 显示以下内容:https://pastebin.com/2237MNX1
不幸的是,当我尝试运行 ffmpeg / ffplay 从正在运行的 VHS 源捕获视频时,它显示根本没有输入任何位数据(报告此处:https://pastebin.com/TAurevCA)。我还尝试使用“v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1”以及“vlc v4l2:///dev/video0”捕获帧,但都不包含数据
我通过电子邮件向 Hauppauge 技术支持确认,该设备已通过 Rpi 4 测试,应该可以正常工作。以下是我尝试过的几种修复方法,但没有成功:
- 多次重启
- 将设备移至各种 USB 2 和 USB 3 端口
- 我确保将 vl42 设置为 NTSC 以匹配我的源
- 如果是 /dev/video0 的权限问题,请使用 sudo 运行 ffmpeg(也尝试过 chmod -R 777 /dev/video0)
- 使用我在此制造商链接中找到的版本替换固件 -https://www.hauppauge.de/pctv-faq/doku.php?id=en:linux:usb-live2-how-to(我相信 RPi 已经安装了这个,因为旧文件的大小与新文件完全相同)
- 通过电子邮件联系了技术支持 - 他们表示该设备已经过测试,可以在 Rpi 4 上运行,除此之外没有帮助
- 从亚马逊订购了另一台相同的设备,以防万一它有故障——结果是一样的
- 我知道我的 VCR/连接工作正常,因为类似的捕获设备在完全相同的设置下工作正常
还有什么想法可以尝试吗?我也在 Mac 上尝试了该设备,使用实时 USB 运行 Ubuntu 18.04.3,结果相同,所以我想也许我遗漏了一些基本的东西?
另外,以防万一它对其他人有用,这里有一些关于我在 Raspberry Pi 4 上尝试过的其他 USB 捕获设备的信息:
(1) 我可以确认,这款便宜的设备在 Pi 4 DIGITNOW USB 2.0 音频/视频转换器上运行良好 - 数字化和编辑来自任何模拟源(包括 VCR、VHS、DVD)的视频 https://smile.amazon.com/gp/product/B06XJKSJZ8/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1
驱动程序显示为“uvcvideo”而不是 cx231xx(质量只是过得去,所以我想看看是否可以做得更好 - 这个只能以已经压缩的 MJPEG 输出全分辨率)
(2)不要把钱浪费在这上面,图像跳来跳去,完全没法用:UVC Usb2.0 视频采集卡,兼容 Windows/Linux https://www.amazon.com/dp/B00RMYWGWC/ref=cm_sw_r_cp_api_i_P-RpEb9BRFMNR
答案1
不知道您是否尝试过这个,但为了让我的 Live 2 使用 ffmpeg 进行捕获,我必须:
v4l2-ctl -d /dev/video0 -s ntsc at every boot
所以我把它添加crontab
到
@reboot v4l2-ctl -d /dev/video0 -s ntsc
答案2
编辑 1:我发现了这些设备无法正常工作的原因。问题是,如果您不初始化配套音频设备,它们将不会返回视频帧。您不需要读取所有音频帧,但您需要初始化并读取第一帧,其他帧可以忽略。这就是建议的 mencoder 命令有效的原因,因为它也会初始化音频。
我能够使用 mencoder 进行捕获,因此这里有一个解决方案:
尝试这个命令:
mencoder \
-v -noskip \
tv:///0 \
-tv norm=NTSC\
:device=/dev/video0\
:driver=v4l2\
:outfmt=i420\
:width=720:height=480\
:fps=29.97\
:alsa\
:adevice=hw.0,0\
:amode=1\
:buffersize=200 \
-ffourcc divx \
-oac mp3lame \
-lameopts cbr:preset=128 \
-ovc lavc \
-lavcopts vcodec=mpeg4\
:vbitrate=1400\
:threads=2\
:autoaspect \
-vf dsize=4/3 \
-vf-add scale \
-vf-add kerndeint=10:0:0:1:1 \
-vf-add softskip,harddup \
-endpos 02:10:00 \
-o ~/usblive2.avi
这将在您的主文件夹中创建一个名为 usblive2.avi 的文件。