Linux USBビデオキャプチャの問題

Linux USBビデオキャプチャの問題

最近の Amazon のレビューで、Hauppauge USB-Live 2 キャプチャ デバイスが最新の Linux カーネルで動作するはずだと書かれていたので、このデバイスを購入しました。

最新バージョンの 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ビデオキャプチャカード、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 という名前のファイルが作成されます。

関連情報