- ベストアンサー
ffmpegではpixel formatがMJPGのUVC対応カメラに対応していない?
- ffmpegでUVC対応カメラの画像がキャプチャーできなくて困っています。
- エラーメッセージ『Cannot find a proper format /dev/video0: I/O error occurred』が出ています。
- 使用しているカメラは、Logitech QuickCam for Notebook ProとELECOM UCAM-DLM130HWHです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
えっと、まず、お詫びがあります。 UVCの場合はcat /dev/video0は効かないようです。 ですから先日の記述…前提がなりたたない orz /dev/videoというデバイスファイルは映像用の共通のデバイスファイル名ですが 実際に、そこに繋がれるデバイスドライバーが違えば それに対してのアクセス方法も、様々ということで… catによる単純読み出しができない場合もあることを知りませんでした。 Linux-uvcの仕様や関連ツールの整備状況が難点のようにも思えます。 ivtvにおけるv4l2-ctlのようなツールがuvc用には無いようです。 これはUSB-MSDに専用ツールが無いように、あたりまえのことなのかもしれません。 が、Linux-uvcがV4L2専用であり、V4L2非対応のソフトではともかく 対応しているはずのffmpeg等でうまく動かないのは 情報不足からくる設定不備か、実装上の非対応なのか謎ですね。 ちなみに某9350eが地元に売っていないことに気づき 自暴自棄になりUVCカメラ買いました。たまたまBUFFALO BSW20K04GM こちらは { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' } で、普通にluvcviewでも使えます。 ただし ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 test.avi での録画は、UVC機器を認識した直後のみ機能し 一旦終了して再度録画するには、UVC機器を切り離して再接続する必要がありました。 (rmmod/modprobeでuvcvideoを再ロードしてもだめみたいです) この辺も、IO制御において必要な処理が行われていない感じがします。 そんなわけでffmpegの資料をちょっとだけ見てみましたが -f video4linux2 オプション以外の情報は特に見つからず… 探し方がわるいのか、そもそも対応していないのか 英語が苦手なので、ちょっとお手上げです。 ただ、その間に目についた `-vbsf bitstream_filter' Bitstream filters available are "dump_extra", "remove_extra", "noise", "h264_mp4toannexb", "imxdump", "mjpegadump". は、MJPEG仕様のカメラと関係があるんじゃないかと思いました。 また、ディストリビューションのリポジトリには無かったりするかもしれませんが MJPG-streamerというソフトではMJPEGでの配信が可能のようです。 (録画機能が無いみたいなんですけどね) Ubuntu8.04(AMD64)でsvnで落として導入してみましたが YUVでは配信コストもCPU負荷も高いので320x240が限界っぽい。 (Core2Duo2GHzでのlocalhost配信) そういう意味ではffmpegで圧縮して配信したいところなのかな。 でも古いノートで監視カメラかわりにするなら MJPEG出力のカメラの方が軽くていいのかもしれない。 (この辺は、メーカーが特性を明記して周知して欲しいところ、雑誌記事もだ) なお、mjpg-streamerは-y(YUV)オプションなどの設定時の区切りが特殊なので ちょっと設定がわかりにくいかもしれない。 (たとえば-iで入力モジュール名から入力オプションまでが""でくくるようになっている) libjpeg-devとかのパッケージが無いとmakeできないし…
お礼
いろいろ調べてもらってありがとうございます。 あなた様は、FFmpegでのUVC対応カメラからのキャプチャーにこだわって いますか?実績のあるカメラを手にいれたいのです。買値の2割ましの 即決価格で落札しますから、Yahooオークションに出していただく わけにはいかないですか。型番がわかっているのだからと思われる かもしれませんが、それで一度失敗しているのです。どうかご検討ください。