2012-02-26 22 views
2

私はUbuntu 10.4でV4L2フレームワークを使い始めました。V4L2でWebカメラのストリームをキャプチャできませんでした

現在、私はいくつかのテストを行うためにウェブカメラを使用しています。私はthisのドキュメントを開始していますが、インストールは正常に動作しています。私はアプリケーションの例をダウンロードしてコンパイルしました。問題は、私が使用して実行可能ファイルを呼び出し、ビデオ出力です:

この出力を与え
# modprobe -r pwc 
# modprobe -v pwc fps=15 compression=3 mbufs=4 fbufs=4 size=vga 
# ./capturer_mmap -D /dev/video0 -w 640*480 -p 0 | ./viewer -w 640*480 -p 0 

:端末上

enter image description here

出力:

window size 640*480 
Video bytespreline = 1280 

Display: 
Image byte order = LSBFirst 
Bitmap unit  = 32 
Bitmap bit order = LSBFirst 
Bitmap pad  = 32 

Window: 
Depth   = 24 
Red mask   = 0x00ff0000 
Green mask  = 0x0000ff00 
Blue mask  = 0x000000ff 
Bits per R/G/B = 8 
Image byte order = LSBFirst 
Bitmap unit  = 32 
Bitmap bit order = LSBFirst 
Bitmap pad  = 32 
Depth   = 24 
Red mask   = 0x00ff0000 
Green mask  = 0x0000ff00 
Blue mask  = 0x000000ff 
Bits per pixel = 32 
Bytes per line = 2560 
IsShared   = True 
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" 
     after 431 requests (19 known processed) with 0 events remaining. 
[email protected]:/home/foo/V4l2_samples-0.4.1# ./capturer_mmap -D /dev/video0 -w 640*480 -p 0 | ./viewer -w 640*480 -p 0 
window size 640*480 
Video bytespreline = 1280 

Display: 
Image byte order = LSBFirst 
Bitmap unit  = 32 
Bitmap bit order = LSBFirst 
Bitmap pad  = 32 

Window: 
Depth   = 24 
Red mask   = 0x00ff0000 
Green mask  = 0x0000ff00 
Blue mask  = 0x000000ff 
Bits per R/G/B = 8 
Image byte order = LSBFirst 
Bitmap unit  = 32 
Bitmap bit order = LSBFirst 
Bitmap pad  = 32 
Depth   = 24 
Red mask   = 0x00ff0000 
Green mask  = 0x0000ff00 
Blue mask  = 0x000000ff 
Bits per pixel = 32 
Bytes per line = 2560 
IsShared   = True 
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" 
     after 101 requests (19 known processed) with 0 events remaining. 

私は修正する方法が分かりませんこの。 WebカメラChesseアプリケーションでWebカメラを使用できるので、私はprobremがCコードであると信じています。どんな助けもありがとうございます。どうもありがとう!

+0

(ちょうど私の提案は理にかなっているかどうかを確認するため)、それはlibv4l-サポートなしでコンパイルされたアプリケーションと連携させるためには、いくつかのLD_PRELOADトリックでlibv4l使用することができ、質問は何ですか?私の答えはあなたが見たイメージがあなたが期待していたものではないと思っていましたが、あなたの投稿から実際には分かりません(例えば、チューンされていないTV入力を表示しようとすると、 –

答えて

2

完全に間違った形式で画像を表示しているようです。

v4l2で作業する場合は、確かに "libv4l"(debianにパッケージされているので、ubuntuでも利用可能です)をチェックアウトしてください。 v4l2では、非常に多数のビデオフォーマットのいずれかでフレームを出力することができ、その一部は圧縮されています(たとえばjpegを使用)。 コアv4l2では、アプリケーションがサポートしている形式にイメージを変換する手段が提供されていないため、アプリケーションではすべての可能な形式をサポートする必要があります。

コードの重複を避けるために(それぞれのv4l2対応アプリケーションは同じ問題に直面します)、libv4lが作成されました:デバイスへの低レベルのアクセスが可能ですが、標準フォーマットはほとんどありません。例: デバイスがjpeg出力のみをサポートし、アプリケーションがRGB32フレームを要求する場合、libv4lは透過的に変換します。

あなたもところで