
Я приобрел устройство захвата Hauppauge USB-Live 2, поскольку несколько недавних обзоров на Amazon предполагают, что оно должно работать с современными ядрами Linux.
Когда я подключаю его к своему Raspberry Pi 4, на котором установлена последняя версия Raspbian Buster, он, похоже, успешно распознается:
- Вот вывод dmesg:https://pastebin.com/kybfrpJH
- v4l2-ctl --all показывает это:https://pastebin.com/2237MNX1
К сожалению, когда я пытаюсь запустить ffmpeg / ffplay для захвата видео с работающего источника VHS, он показывает 0 бит входных данных (сообщите здесь: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, чтобы он соответствовал моему источнику.
- Запуск ffmpeg с sudo на случай, если проблема была в правах доступа для /dev/video0 (также пробовал chmod -R 777 /dev/video0)
- Заменил прошивку на версию, которую нашел по этой ссылке производителя -https://www.hauppauge.de/pctv-faq/doku.php?id=en:linux:usb-live2-how-to(Я думаю, что RPi уже установил это, потому что размер старого файла был точно таким же, как и у нового файла)
- Написал в техподдержку - они сообщили, что устройство протестировано на совместимость с Rpi 4, и больше ничем помочь не смогли.
- Заказал на Amazon еще одно такое же устройство, чтобы проверить, неисправно ли оно — результат тот же.
- Я знаю, что мой видеомагнитофон/подключения работают нормально, потому что аналогичное устройство захвата работает нормально с точно такой же настройкой.
Есть мысли, что еще можно попробовать здесь? Я также попробовал устройство на моем Mac с Ubuntu 18.04.3, запущенным с Live USB, и результат тот же, так что я думаю, может быть, я упускаю что-то элементарное?
Также, на всякий случай, если это будет полезно кому-то еще, вот некоторая информация о других USB-устройствах захвата, которые я пробовал с Raspberry Pi 4:
(1) Я могу подтвердить, что это более дешевое устройство работает довольно хорошо с Pi 4 DIGITNOW USB 2.0 Audio/Video Converter - оцифровка и редактирование видео с любого аналогового источника, включая 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 в вашей домашней папке.