Problemas de captura de vídeo USB do Linux

Problemas de captura de vídeo USB do Linux

Comprei o dispositivo de captura Hauppauge USB-Live 2 porque várias análises recentes da Amazon sugerem que ele deve funcionar com kernels Linux modernos.

Quando eu o conecto ao meu Raspberry Pi 4 executando a versão mais recente do Raspbian Buster, ele parece ser reconhecido com sucesso:

Infelizmente, quando tento executar ffmpeg / ffplay para capturar vídeo de uma fonte VHS em execução, ele mostra 0 bits de dados de entrada chegando (relatório aqui:https://pastebin.com/TAurevCA). Também tentei capturar um quadro com "v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=frame.raw --stream-count=1" bem como "vlc v4l2:// /dev/video0" e nenhum contém dados

Confirmei com o suporte técnico da Hauppauge por e-mail que a unidade foi testada com o Rpi 4 e deve funcionar. Algumas das correções que tentei sem sorte:

  • Muitas reinicializações
  • Movendo o dispositivo para as várias portas USB 2 e USB 3
  • Certifiquei-me de definir vl42 para NTSC para corresponder à minha fonte
  • Executando ffmpeg com sudo caso fosse um problema de permissão para /dev/video0 (também tentei chmod -R 777 /dev/video0)
  • Firmware substituído pela versão que encontrei neste link do fabricante -https://www.hauppauge.de/pctv-faq/doku.php?id=en:linux:usb-live2-how-to(Acredito que o RPi já tenha instalado porque o tamanho do arquivo antigo era exatamente igual ao do novo)
  • Suporte técnico enviado por e-mail - eles indicaram que o dispositivo foi testado para funcionar no Rpi 4 e, de outra forma, não foi útil
  • Encomendei outro dispositivo idêntico da Amazon para testar caso fosse uma unidade com defeito - mesmo resultado
  • Eu sei que meu videocassete/conexões funcionam bem porque um dispositivo de captura semelhante funciona bem com exatamente a mesma configuração

Alguma ideia sobre o que mais tentar aqui? Também experimentei a unidade no meu Mac com Ubuntu 18.04.3 rodando em um USB ativo e o mesmo resultado, então estou pensando que talvez esteja faltando algo básico.

Além disso, caso seja uma informação útil para alguém, aqui estão algumas informações sobre outros dispositivos de captura USB que experimentei com o Raspberry Pi 4:

(1) Posso confirmar que este dispositivo mais barato funciona muito bem no conversor de áudio/vídeo Pi 4 DIGITNOW USB 2.0 - digitalize e edite vídeo de qualquer fonte analógica, incluindo videocassete, VHS, DVD https://smile.amazon.com/gp/product/B06XJKSJZ8/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1

O driver é exibido como "uvcvideo" em vez de cx231xx (a qualidade é aceitável, então estou tentando ver se consigo fazer melhor - este só gera resolução total em MJPEG que já está compactado)

(2) NÃO desperdice seu dinheiro com este, a imagem salta e fica completamente inutilizável: Placa de captura de vídeo UVC Usb2.0, compatível com Windows/Linux https://www.amazon.com/dp/B00RMYWGWC/ref=cm_sw_r_cp_api_i_P-RpEb9BRFMNR

Responder1

Não sei se você tentou isso, mas para capturar meu Live 2 com ffmpeg, tive que:

v4l2-ctl -d /dev/video0 -s ntsc at every boot

Então eu adicionei crontabcom

@reboot v4l2-ctl -d /dev/video0 -s ntsc

Responder2

Edição 1: descobri porque esses dispositivos não funcionam corretamente. O problema é que se você não inicializar o dispositivo de áudio complementar, ele não retornará quadros de vídeo. Você não precisa ler todos os quadros de áudio, mas precisa inicializar e ler o primeiro quadro, outros podem ser ignorados. É por isso que o comando mencoder proposto funciona, porque inicializa o áudio também.

Consegui capturar usando o mencoder, então aqui está uma solução:

Experimente este comando:

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

Isso criará um arquivo chamado usblive2.avi em sua pasta pessoal.

informação relacionada