Linux USB 비디오 캡처 문제

Linux USB 비디오 캡처 문제

최근 여러 Amazon 리뷰에서 최신 Linux 커널과 작동해야 한다고 제안했기 때문에 Hauppauge USB-Live 2 캡처 장치를 구입했습니다.

최신 버전의 Raspbian Buster를 실행하는 Raspberry Pi 4에 연결하면 성공적으로 인식되는 것 같습니다.

불행하게도 실행 중인 VHS 소스에서 비디오를 캡처하기 위해 ffmpeg / ffplay를 실행하려고 하면 입력 데이터가 전혀 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로 설정했습니다.
  • /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에서 작동하도록 테스트되었으며 그 외에는 도움이 되지 않았다고 표시되었습니다.
  • 결함이 있는 장치인 경우를 대비해 Amazon에서 다른 동일한 장치를 주문했지만 결과는 동일함
  • 유사한 캡처 장치가 정확히 동일한 설정에서 잘 작동하기 때문에 내 VCR/연결이 제대로 작동한다는 것을 알고 있습니다.

여기서 무엇을 더 시도해 볼 생각이 있으신가요? 또한 라이브 USB를 사용하여 Ubuntu 18.04.3을 실행하는 Mac에서 장치를 사용해 보았지만 동일한 결과가 나왔으므로 기본적인 것이 누락된 것 같습니다.

또한 다른 사람에게 유용한 정보가 될 경우를 대비해 제가 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

드라이버는 cx231xx가 아닌 "uvcvideo"로 표시됩니다. (품질은 그럭저럭 괜찮으므로 더 잘할 수 있는지 알아보고 있습니다. 이 드라이버는 이미 압축된 MJPEG의 전체 해상도만 출력합니다.)

(2) 이것에 돈을 낭비하지 마십시오. 이미지가 여기저기 뛰어다니고 완전히 사용할 수 없습니다. UVC Usb2.0 비디오 캡처 카드, 호환 가능한 Window/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라는 파일이 생성됩니다.

관련 정보