• ベストアンサー

ffmpegでUVCカメラの画像が録画ができない

ffmpegでUVCカメラの画像を録画しようとしていますが、エラー が出てうまくいきません。 以下のようなエラーがでます。 [video4linux2 @ 0x92669b0]Wrong size (0x0) /dev/video0: Error while opening file 実行は、 ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 test.mpg で行っています。 OSは、CentOS 5.3で、UVCカメラは、ELECOM UCAM-DLM130HWH と Logitech QuickCam for Notebooks Proを試してみました。 /dev/video0 ができてきますのでデバイスの認識はうまくいって いると思います。/var/log/messageでも確認しました。 http://ffmpeg.org/ffmpeg-doc.html の2.1に Note that you must activate the right video source and channel before launching FFmpeg with any TV viewer such as xawtv のような記述がありアクティベートが必要ではないかと思っているの ですが、 http://nighedge.blog59.fc2.com/blog-entry-170.html にもあるように、xawtvはvideo4linux2に対応していないみたいで、 使えません。 先のURLにあった、fswebcamを使ってみたところ、静止画は撮影できました。 しかし、ffmpegはあいかわらずです。 xawtvのように常に表示している状態のものでなければならないのでしょうか? ffmpegの古いリビジョンなら問題ないという記事もみつけたのですが、 libswscaleだけは古いリビジョンはないようでコンパイルエラーに なってしまいます。 どうかいいアドバイスをお願いします。

noname#99417
noname#99417

質問者が選んだベストアンサー

  • ベストアンサー
noname#136147
noname#136147
回答No.2

当方、UVC対応のBUFFALO BSW13K05HのWebカメラを使っております。 ffmpegのコマンドオプションを % ffmpeg -f video4linux2 -i /dev/video0 test.mpg にすると、 [video4linux2 @ 0x8067b00]Wrong size (0x0) /dev/video0: Error while opening file のようなエラーになりますが、 % ffmpeg -f video4linux2 -s 640x480 -i /dev/video0 test.mpg にして、"-s 640x480" のようにサイズを追加してやると [video4linux2 @ 0x8067b00][3]Capabilities: 4000001 Input #0, video4linux2, from '/dev/video0': Duration: N/A, start: 1251198549.740271, bitrate: -2147483 kb/s Stream #0.0: Video: rawvideo, yuyv422, 640x480, -2147483 kb/s, 1000k tbr, 1000k tbn, 1000k tbc Output #0, mpeg, to 'test.mpg': Stream #0.0: Video: mpeg1video, yuv420p, 640x480, q=2-31, 200 kb/s, 90k tbn, 60 tbc Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop encoding ioctl(VIDIOC_QBUF) frame= 1448 fps= 62 q=31.0 Lsize= 1216kB time=24.12 bitrate= 413.1kbits/s video:1207kB audio:0kB global headers:0kB muxing overhead 0.717781% のようにキャプチャー出来ております。 普段は、 % ffmpeg -f video4linux2 -s 640x480 -r -i /dev/video0 -vcodec libx264 test.mp4 のようにして、H.264に変換して使用しています。 ffmpegはバージョンによってオプションが異なったりするので、 サイズ、FPS、フォーマットなどいろいろ変更して (追加する場所も異なることもあるので) 実行してみるのがいいのではないでしょうか? 私のところで使っているffmpegは、svnの20090413版です。

noname#99417
質問者

補足

-s オプションを指定すると、 今度は、 Cannot find a proper format /dev/video0: I/O error occurred Usually that means that input file is truncated and/or corrupted. というエラーがでます。 オプションもいろいろ試してみてはみたのですが。

その他の回答 (4)

noname#136147
noname#136147
回答No.5

No.2,No.4です。 Webカメラは、BUFFALO BSW13K05Hシリーズを使っています。 Kernelは2.6.30.5を自分でコンパイルして使っています。 ============================================================== % luvcview -L luvcview 0.2.5 SDL information: Video driver: x11 A window manager is available Device information: Device path: /dev/video0 /dev/video0 does not support read i/o { pixelformat = 'YUYV', description = 'YUV 4:2:2 (YUYV)' } { discrete: width = 640, height = 480 } Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, { discrete: width = 352, height = 288 } Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, { discrete: width = 320, height = 240 } Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, { discrete: width = 176, height = 144 } Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, { discrete: width = 160, height = 120 } Time interval between frame: 1/30, 1/25, 1/20, 1/15, 1/10, 1/5, { discrete: width = 1280, height = 960 } Time interval between frame: 1/9, 1/5, { discrete: width = 1280, height = 1024 } Time interval between frame: 1/9, 1/5, ============================================================== と、YUYVを使っているようです。 逆に、 ============================================================== % luvcview -f MJPG luvcview 0.2.5 SDL information: Video driver: x11 A window manager is available Device information: Device path: /dev/video0 Stream settings: Frame format: YUYV (MJPG is not supported by device) Frame size: 640x480 Frame rate: 30 fps Cleanup done. Exiting ... ============================================================== と、MotionJPEGを使おうとしてもサポートされていないと表示され、 YUYV形式を使って動画が表示されます。 質問者様の環境では、luvcview -f MJPG で動画が表示されるのでしょうか? (No.4のリンク先を見る限りはYUYVも扱えるようですが) 表示されるようならば、ffmpegの問題だと思いますが、 表示されないようならば、ドライバが怪しいと思えます。 (私としては、YUYVとかMJPGを吸収するのに、video4linux2があると思っているのですが)

noname#99417
質問者

お礼

あなた様の機種がYahooオークションに出ていましたので、 購入することにしました。これで原因を絞りやすくなりました。 お付き合いいただいて本当にありがとうございました。

noname#99417
質問者

補足

以前の回答に機種とか書いてありましたね。 それにffmpegのログをみると、yuyvであることも予想がつきましたね。 わざわざ確認していただいてありがとうございました。 luvcview -f MJPG  を実行したところ、正常に表示されましたので、ご報告申し上げます。

noname#136147
noname#136147
回答No.4

・[Linux-uvc-devel] ELECOM UCAM-DLM130H working report http://lists.berlios.de/pipermail/linux-uvc-devel/2007-September/002082.html を見ると、 =========================================================== 2)tested enviroment hardware: i386 disribution: Ubuntu 7.0.4(Feisty Fawn)*) kernel version: 2.6.20-16 libc version: 2.5.0 *)Distro's Initial kernel module does not work so I 'd download the latest SVN module and make it with ubuntu kernel-source =========================================================== と書いてあり、 kernel-2.6.20のインストール初期状態では動かず、svnの最新モジュールを使って動作したような感じに受け取れます。 ので、CentOS5.3は2.6.18だったと思うので、 少なくとも2.6.21以降のモジュール(uvcvideoドライバ)を使わないと質問者様のWebカメラは動かないのかもしれません。 さらに、私の環境で#1,#3様の "cat /dev/video0" も試してみました。 =========================================================== % ls -l /dev/video0 crw-rw---- 1 root video 81, 0 2009-08-26 17:50 /dev/video0 % groups users audio video cdrom % cat /dev/video0 cat: /dev/video0: そのようなデバイスはありません =========================================================== ffmpegで読み取れるユーザで実行しても、このような結果になってしまうようです。 このあたりからの条件の切り分けは難しそうですね。

参考URL:
http://lists.berlios.de/pipermail/linux-uvc-devel/2007-September/002082.html
noname#99417
質問者

お礼

有用な情報ありがとうございました。

noname#99417
質問者

補足

使用しているカメラのメーカと型番を教えていただけると 助かります。 それと、luvcviewコマンドをインストールされているのであれば luvcview -L でカメラの情報を取得し、 pixel formatが何か調べていただくと助かります。 pixel formatがYUYVではなくMotionJPEGだとダメだという情報も あるのです。

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.3

cat /dev/video0がエラー終了するなら、確実に/dev/video0が機能していない。 一連のトラブルの全部が/dev/video0が読み出せないところにあるようです。 デバイスはありませんのエラーが出てしまう点から考えれば 撮影操作が始められない場合、タイムアウトで電源が落とされ デバイスが切り離される仕様である可能性もあります。 (でも、そういう仕様だと普通不便なので謎) とりあえず、ありません以外のエラーについては デバイスが存在しているから/dev/video0は作られているけど デバイスからのビデオストリームが送り出される状態になっていない。 つまり、UVCの認識は行なわれているけど、UVCの撮影動作が行なわれていないと考えられます。 UVCの規格で定められるのは操作方法の部分ですから 初期状態での動作は、機種ごとに違うのかもしれません。 (UVCドライバーの初期化が適切なのかも謎ですけど) cat /dev/video0が読み出しエラーであれば、理屈の上では (パーミッションの問題を除けば)すべてのアクセスに対して 動作しないと考えられます。 基本的なところで動作確認をしないで いくつものソフトを試しても無意味です。 ただしUVCを想定した撮影ソフトなどであれば /dev/video0からの読み出しの前に 必要な処理をやってくれる可能性はあるかもしれません。 #だって、チューナーカードだって #ただ組み込んでcatしても、砂嵐しか出ないものなぁ…

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.1

そのへんはかなりわかんないんですけど、最低限/dev/video0が 正常に機能しているのかは確認したいと思います。 キャプチャカードだと"cat /dev/video0|ffplay -"で確認できます。 適切な使用にはv4l2-ctl等での設定が必要だったりします。

noname#99417
質問者

補足

cat: /dev/video0: そのようなデバイスはありません。 pipe:: unknown format となります。 ただ、fswebcamでは撮影できていますし、xawtv -hwscan でもデバイスは 認識されている感じがします。

関連するQ&A

  • ffmpegはpixel formatがMJPGのUVC対応カメラには対応していないのですか?

    ffmpegでUVC対応カメラの画像がキャプチャーできなくて困っています。 Cannot find a proper format /dev/video0: I/O error occurred Usually that means that input file is truncated and/or corrupted. というエラーが出ます。 以下のような記事を見つけました。 http://lists.berlios.de/pipermail/linux-uvc-devel/2009-March/004663.html 同じ問題を抱えていた方で、 入力フォーマットがモーションJPEGのカメラが問題では ないかと指摘されています。 luvcview -L でpixel formatなどの情報が出ます。 わたしの使用したUVC対応カメラは、モーションJPEGでした。 pixel formatが、モーションJPEGでもffmpegでキャプチャーできているよ という方がいっらしゃいましたら、情報をください。 エラーの原因の検討がつく方、アドバイスください。 使用しているカメラは、Logitech QuickCam for Notebook Proと ELECOM UCAM-DLM130HWHです。 Logitechのカメラは、luvcviewで画像がみれます。 ELECOMのカメラは、ドライバーは認識しますが、luvcviewでもみれません。

  • ffmpegの古いリビジョンを使いたい

    http://blog1.papanda.jp/2008/05/ffserveruvcusb.html にあるように、UVC対応のUSBカメラでキャプチャーしたいのと、 http://codezine.jp/article/detail/2444 のサンプルを動作させたいこともあり、 ffmpegの古いリビジョンを使いたいのですが、 svnでチェックアウトすると、libswscaleだけ外部項目ということで 最新のリビジョンがチェックアウトされます。 ソースの相性が悪く、コンパイルが通りません。 WindowsのExeだけは、アーカイブを提供しているサイトを見つけたの ですが、Linux版は見つけることができませんでした。 古いリビジョンを取得する方法もしくはアーカイブがあるサイトを ご存知の方はいらっしゃらないでしょうか。 リビジョンを特定しろと言われれば、 9133,9778,13235 です。 よろしくお願いします。

  • ffmpegについて

    長文になりますが、何卒宜しくお願いします。 家庭内で、ライブカメラの実験を行っています。 ffmpegのインストール、カメラの認識も出来ている状況です、ここで # ffserver -f /etc/ffserver.conf & # ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 http://127.0.0.1:8090/feed1.ffm このオペレーション行うと、USBカメラのLEDが点灯し、Serve 側では、下記の通り表示されます。 FFmpeg version 0.5, Copyright (c) 2000-2009 Fabrice Bellard, et al. configuration: libavutil 49.15. 0 / 49.15. 0 libavcodec 52.20. 0 / 52.20. 0 libavformat 52.31. 0 / 52.31. 0 libavdevice 52. 1. 0 / 52. 1. 0 built on Apr 25 2009 17:37:54, gcc: 4.2.4 [video4linux2 @ 0x88a0290][3]Capabilities: 4000001 Input #0, video4linux2, from '/dev/video0': Duration: N/A, start: 1240657720.663330, bitrate: -2147483 kb/s Stream #0.0: Video: rawvideo, yuyv422, 320x240, -2147483 kb/s, 1000k tbr, 1000k tbn, 1000k tbc Sat Apr 25 20:08:41 2009 127.0.0.1 - - [GET] "/feed1.ffm HTTP/1.1" 200 8245 Output #0, ffm, to 'http://127.0.0.1:8090/feed1.ffm': Stream #0.0: Video: msmpeg4, yuv420p, 320x240, q=3-31, 256 kb/s, 1000k tbn, 30 tbc Stream mapping: Stream #0.0 -> #0.0 Press [q] to stop encoding [msmpeg4 @ 0x88a6530]rc buffer underflow [msmpeg4 @ 0x88a6530]warning, clipping 1 dct coefficients to -127..127s/s frame= 580 fps= 31 q=3.5 size= 616kB time=19.33 bitrate= 261.0kbits/s frame= 689 fps= 31 q=4.3 size= 732kB time=22.97 bitrate= 261.1kbits/s (ffserverが動作しているので、刻々と変化します) クライアント側からIEを起動しurlへhttp://192.168.0.2:8090/stat.htmを開くと、FFserver Statusというページが正常に表示されます ここで、test.asfをクリックしますと、WMPが起動するのですが、「要求された操作は現在実行できません」 このように、表示され、何も表示しません、原因は恐らく、ffserver.conf だと思うのですが、いかんせん素人なもので、自己解決できません、ご教示お願いいたします、以下 ffserver.confの内容、及び各種設定、オペレーションです Port 8090 BindAddress 0.0.0.0 MaxHTTPConnections 2000 MaxClients 10 MaxBandwidth 1000 CustomLog /var/log/ffserver.log NoDaemon <Feed feed1.ffm> File /tmp/ffserver/feed1.ffm FileMaxSize 1G ACL allow 127.0.0.1 </Feed> <Stream test.asf> Feed feed1.ffm Format asf VideoFrameRate 30 VideoSize 320x240 VideoBitRate 256 VideoBufferSize 2000 VideoGopSize 60 NoAudio StartSendOnKey </Stream> <Stream stat.html> Format status ACL allow localhost ACL allow 192.168.0.2 192.168.255.255 </Stream> <Redirect index.html> URL http://www.ffmpeg.org/ 環境 サーバー側 IP address 192.168.0.2 OS slackwware 12.2 ffmpeg 0.5 Camera ELECOM UCAM-H1C30MSV クライアント側 IP address 192.168.0.3 OS Windows XP SP3 Windows Media Player 9.0 FFmpegインストールオペレーション # ./configure # make && make install USBカメラの認識確認オペレーション # lsusb Bus 002 Device 002: ID 056e:7002 Elecom Co., Ltd # dmesg|grep Camera usb 2-3: Product: USB2.0 PC Camera uvcvideo: Found UVC 1.00 device USB2.0 PC Camera (056e:7002) input: USB2.0 PC Camera as /devices/pci0000:00/0000:00:1d.7/usb2/2-3/2-3:1.0/input/input2

  • 【MacOSX】FFmpegとUSBウェブカメラでストリーミングサーバ構築

    MacOSX G4 PowerPC(10.4) にてウェブカメラを用いたストリーミングサーバの構築を考えております。 わが家のMacはHDD容量の問題で"QuickTime Streaming Server"をインストール出来ないようなので、FFmpegで構築したいのですがUSB接続したウェブカメラのデバイスファイルが見当たりません。 Linuxでは"/dev/video"をインプットしてカメラの映像を取得するようですが、Macでもそのように振る舞うことは可能でしょうか? いろいろと検索してみたのですが、該当する記事を見付けることができなかったのでこちらへ質問させていただきました。 以上、宜しくお願い致します。

    • ベストアンサー
    • Mac
  • USB 接続カメラ

    Logitec QuickCam のような USB 接続ビデオ・カメラを用いたアプリケーションの作成を考えています。Linux もしくは FreeBSD 向けにメーカーが積極的に API を公開していて、これらの OS の上で開発しやすい製品はどれでしょうか? よろしくお願いします。

  • Linux 上の ffmpeg での Compressed SWF 対応について

    ニコニコムービーメーカーで作成された動画(拡張子.swf)をLinux上のffmpegで変換しようとすると、以下のようなエラーがでました。 [swf @ 0xb7f4bfe0]Compressed SWF format not supported smile.swf: I/O error occured Usually that means that input file is truncated and/or corrupted. 圧縮されたSWFファイル? にffmpegを対応させることは可能でしょうか。

  • MacでSkypeの映像が映らない

    お世話になります。 是非、皆様のお知恵をいただきたいので、よろしくお願いいたします。 Apple iBook G4(OS:Max OS X 10.4.11)を使っています。 Skypeをするために、ELECOMのUCAM-DLU130HWHを購入しました。 このWEBカメラはUVCに対応しているらしいのですが、 Skypeの設定にて、「ビデオ」の項目を開くと、 カメラ無効:[USB2.0 Camera] と表示されていて、自分の映像が映るべき場所が 緑色で表示されています。 YAHOOメッセンジャーをインストールしてみたら映像が映りました。 また「WebCam Monitor」というツール上でも、ちゃんと映りました。 Skypeだけが表示してくれません。 どうしたらSkypeで映像を映ることが出来るのでしょうか? UVCのドライバが、おかしいのでしょうか? もしくはSkypeがおかしいのでしょうか? もし、UVCが悪いのであれば、 このドライバはどこからダウンロードしてインストールすれば 良いのでしょうか? かなり切実な問題なので、どなたか分かる方いらっしゃいましたら、 是非お願いいたします。

    • ベストアンサー
    • Mac
  • Life View TVR?USBウェブカメラが使用できない

    先日ウェブカメラを購入しました。 Skypeでテレビ電話みたいに使用したくて買ったのですが、使ってみるとまったく映りません。 まず、メーカーには問い合わせて聞いたのですが、それによれば製品のソフトウェアに付属するテスト再生では問題なく移すことができたので、カメラの不良ではないことは分かりました。 そして、そのカメラの映らない原因は何やらLife View TVRというソフトが邪魔をして映らないみたいとのことでした。 そのソフトを停止することで再生が可能となるみたいですが、このLifeViewTVRというソフトは削除して大丈夫なのでしょうか? このソフトは自分で入れたものではなく、パソコン購入時に元からインストールされていたものと思います。 どういうソフトウェアなのか、自分でも調べてみたのですが、ビデオキャプチャ?のソフトみたいですけど、私はあんまり詳しくないので分かりません。 以前使ってないからいらないだろう、と独断でソフトを削除したけど、どうやら大事なソフトだったらしく、削除が原因でパソコンに不調がでたことがあります。 ですので、このソフトも削除していいのか、自分では判断できません。 どなたかアドバイスお願いします。 OS・・Windows XP パソコンのメーカー・・電化店の組み立て商品のため、無し カメラのメーカー・・ELECOM カメラ型番・・UCAM-DLM130HWH

  • FOMA 700isのツールのカメラとビデオカメラが作動しなくなってしまいました。

    FOMA F700isの機種で、現在docomoとは契約をしておらず、 機能のみを使っております。(音楽を聴いたり、画像を見たり、写真を撮ったり) 先日から、こちらのツールのカメラとビデオカメラが作動しなくなってしまいました。電源を落としてやり直しをしても、 「回復できないエラーが発生したため終了します」 という表示が出てしまいます。 新しい機種(FOMAなら旧式でもなんでもいいのですが)だけを買おうしたのですが、それはできないそうで。 ともかく機種だけが欲しいのです。 そこでアドバイスをいただきたいのですが、 (1)docomoに持っていって、カメラとビデオカメラだけを直してもらうことができるのでしょうか? (2)機種だけが欲しいのですが、一度契約して、買いなおすしかないのでしょうか? (3)こういったエラーがでてしまったら、もうダメなのでしょうか? (4)機種だけを安く売っているお店はあるのでしょうか? 他に何か方法がありますでしょうか? どうぞよろしくお願いいたします。

  • Powershellでtsファイルをmp4に変換

    Powershellでtsファイルを無劣化でmp4に変換する事が出来そうなので 下記の記事を参考にスクリプト(test.ps1)を作成してみました。 http://pcsos.blog89.fc2.com/blog-entry-243.html '-------------------------------------------------- # MP4・MPG・WMV・TS ⇒ H.264 MP4 (PowerShell ファイル名スペース対応) $TARGET_DIR="C:\Users\ssd\Desktop\変換前\" $DEST_DIR="C:\Users\ssd\Desktop\変換後\" $FFMPEG="C:\ffmpeg-2022-12-11\bin\ffmpeg.exe" $FFMPEG_OPT_VIDEO="-c:v copy" $FFMPEG_OPT_AUDIO="-c:a copy" function h264enc { if ($args.count -ge 1) { $arg="-i '$args.mpg' -movflags faststart $FFMPEG_OPT_VIDEO $FFMPEG_OPT_AUDIO $DEST_DIR'$args.mp4'" powershell -Command "$FFMPEG $arg" } else { "エンコード対象のファイルを指定してください。" } } cd $TARGET_DIR Get-ChildItem | ForEach-Object { h264enc $_.Basename } pause '-------------------------------------------------- 変換されそうにはなりますが、   mpegを書き出し時に 「No such file or directory」とエラーになります。 エラーの修正をお願いします。