問題タブ [v4l2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 単一のファイル記述子から複数のMMAPを割り当てるにはどうすればよいですか?
したがって、最終年度のプロジェクトでは、Video4Linux2を使用してカメラからYUV420画像をプルし、それらをx264(これらの画像をネイティブに使用)に解析してから、エンコードされたストリームをLive555経由でRTP/RTCP準拠のビデオプレーヤーに送信します。ワイヤレスネットワークを介したクライアント。これらすべてをリアルタイムで実行しようとしているので、制御アルゴリズムがありますが、それはこの質問の範囲ではありません。Live555を除くこれらすべてはCで書かれています。現在、私はビデオのエンコードが終わりに近づいていますが、パフォーマンスを向上させたいと考えています。
控えめに言っても、私は問題にぶつかりました... V4L2のユーザースペースポインターを避け、mmap()を使用しようとしています。私はビデオをエンコードしていますが、YUV420なので、x264が読み取るためにY'、U、V平面を3つの異なる変数に保持するために新しいメモリをmallocしています。これらの変数をmmapされたメモリへのポインタとして保持したいと思います。
ただし、V4L2デバイスにはバッファリングされたストリーム用の単一のファイル記述子があり、ストリームをYUV420標準に準拠した3つのmmap変数に分割する必要があります...
ここで、「幅」と「高さ」はビデオの解像度です(例:640x480)。
私が理解していることから...MMAPは次のようなファイルを検索します(疑似コード):
私のコードはここのLaunchpadリポジトリにあります(詳細については):http: //bazaar.launchpad.net/~alex-stevens/+junk/spyPanda/files(リビジョン11)
そして、YUV420フォーマットはこのWikiの図からはっきりと見ることができます:http://en.wikipedia.org/wiki/File :Yuv420.svg (私は基本的にY、U、Vバイトを各mmapに分割したいメモリー)
1つのファイル記述子から3つの変数をメモリにmmapする方法を説明したい人はいますか、それともなぜ私が失敗したのですか?または、YUV420バッファをx264に解析するためのより良いアイデアを示唆することさえできますか?:P
乾杯!^^
audio - LinuxUSBキャプチャデバイスからffmpegと同時にオーディオとビデオをキャプチャするにはどうすればよいですか?
USB Terratec Grabster AV350(em2860チップをベースにしています)を使用してビデオをキャプチャしています。
再生時に音声を取得できません。キャプチャしたビデオをvlcまたはffplayで再生すると、3秒のサウンドしか得られず、残りのビデオは無音になります...
キャプチャ中にエラーは発生しません。最後に、キャプチャされたビデオとオーディオのサイズを示します...。
私はこれにffmpegコマンドを使用しています:
ffmpeg -f alsa -ac 2 -i hw:3 -f video4linux2 -i / dev / video0 -acodec ac3 -ab 128k -vcodec mpeg4 -b 6000k -r 25 test5.avi
ログは:
オーディオのみをキャプチャするコマンドを減らすと、オーディオファイルを正常に再生できます。
ffmpeg -f alsa -ac 2 -i hw:3,0 -acodec ac3 -ab 128k test5.avi
ビデオキャプチャのみのコマンドを実行すると、vlcまたはffplayでビデオを正常に再生できます。
ffmpeg -f video4linux2 -i / dev / video0 -vcodec mpeg4 -b 12000k -r 25 test5.avi
私が気付いた奇妙な振る舞いは、ビデオとオーディオをキャプチャしようとしたときに、最初にAV350のプラグを抜かない限り、後でオーディオをキャプチャできないことです。
G350はカード3にあります:
OSはLinux2.6.38-8-genericでUbuntuNattyNarwhalバージョン
この問題に取り組む方法についての助けは素晴らしいでしょう....
ありがとう !
stream - RTSP を使用したウェブカメラのストリーミング
ラップトップに接続された Web カメラを使用してビデオのライブ ストリーミングを試みています。Linux Ubuntuで作業しています。
サーバー側とクライアント側の Gstreamer パイプラインは次のとおりです。
ストリーミング サーバー: v4l2 デバイスからビデオを提供するために gst-rtsp-server を使用しようとしています。
./test-launch --gst-debug=0 "( v4l2src ! video/x-raw-yuv,width=352,height=288,framerate=15/1 ! x264enc ! rtph264pay name=pay0 pt=96 )"
レシーバー:
gst-launch -v rtspsrc location=rtsp://192.168.XX.XX:8554/test ! デコードビン!自動ビデオシンク
次のメッセージ エラーがあります。
パイプラインを一時停止に設定しています...<br> エラー: パイプラインは一時停止を望んでいません。
エラー: エレメント /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0 から: リソースから読み取れませんでした。追加のデバッグ情報: gstrtspsrc.c(4573): gst_rtspsrc_send (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: エラー応答が得られました: 503 (サービスを利用できません)。
パイプラインを NULL に設定しています…<br>パイプラインを解放しています…</p>
この問題を知っている、または私を助けようとすることができるのは誰ですか?
linux - 1 つの USB 2.0 ハブに 2 つの Web カメラ - Windows では動作しますが、Linux では動作しません
以下の openCV コードは、2 台のカメラから同時に画像を取得します。両方のカメラが 1 つの USB 2.0 ハブに接続されている Windows では問題なく動作します。Linux で同じコードを試すと、一度に 1 台のカメラに十分な帯域幅しかありません。また、同じ問題で guvcview を使用して 2 つのストリームを同時に表示しようとしました。私が必要としているのは、おそらくドライバーが要求する帯域幅の量を設定することによって、Web カメラを強制的に連携させる何らかの方法です。
video-capture - V4L2 ビデオ キャプチャ ドライバーは、ストリームの送信元をどのように認識しますか?
24 ビット RGB 入力を受信してディスプレイに表示するドライバーを作成する必要があります (mplayer としてサード パーティ製アプリを使用するか、Fame バッファーにダンプするかのいずれかで、現時点では重要ではありません)。
セットアップは、ビデオ キャプチャ チップが接続された OMAP3 プラットフォーム上の 2.3.39 カーネルです。
どの GPIO がビデオ キャプチャ チップ (clk、hsync、vsync を含む) からデータを受信するかを知っています。
CPU GPIO 入力をデバイスにストリーミングするように定義する方法を理解するために、いくつかのドライバーを確認しようとしましたが、接続方法についての手がかりが見つかりませんでした。私は現在、omap3isp を使用するこれらの正確な GPIO で動作するカメラを持っています。他のビデオ入力に置き換えようとしています。
この問題に光を当ててください。どんな助けもいただければ幸いです。
最高です、ジョナサン。
android - Androidでカメラとマイクにアクセスするには?
Androidプログラムを書きたいのですが、AndroidのUIでjniを使用してopenmax経由でコーデックにアクセスします.openmaxコンポーネントにビデオオーディオソースまたはフレームバッファがないことがわかりました.私の携帯電話はQualcommのmsm7227プラットフォームです. クアルコムのウェブサイトでは、SOCにamrコーデックがあると書かれています。
V4L2 を使用してカメラにアクセスし、/dev/XX などのオーディオ デバイスに直接アクセスしてオーディオ データをキャプチャできますか?
たとえば、写真をキャプチャしてエンコードしたい場合、最初にバッファーを割り当て、V4L2 によってバッファーにデータを入力してから、アドレスとその他のパラメーターを openmax ビデオ エンコーダー コンポーネントに渡します。それが良い方法かどうかはわかりません。
経験のある人が私を助けることができますか?
ところで、Java は非常に遅いので、C または C++ でコーディングしたいと考えています。
python - Python/FFMPEG コマンド ラインの問題
Python スクリプト内から FFMPEG コマンドを実行する際に問題があります。ターミナルから次のコマンドを実行すると、接続された Web カメラ (Logitech C310) からビデオとオーディオをストリーミングし、エラーなしでファイル「out.avi」に出力できます。
以下の Python スクリプトで同じコマンドを実行すると、
それは私にエラーを与えます:
ここで何が起こっているのか、誰かに光を当てることができますか? os.system() と subprocess.call() を使用してみましたが、同じエラーが発生します。ここで何がうまくいかないのか、どこから始めればよいのかわかりません。「video4linux2 Cannot find a appropriate format for codec_id 0, pix_fmt -1」エラーを検索してみましたが、一貫したものは見つかりませんでした。
また、「ffmpeg -f ...」コマンドをシェルスクリプト「test.sh」に入れ、実行権限を与えてみました。次に、ターミナルを開いて「./test.sh」を実行すると、動作します。Python スクリプト内からコマンド「./test.sh」を呼び出そうとすると、以前と同じように元のエラーが残ります。これは、test.sh スクリプトで試した Python コマンドです。
c - mmap 物理的に連続したメモリ
ここで誤解があるかもしれませんが、ご容赦ください。
カメラから画像をキャプチャするプログラムを書きました。V4L2 ドキュメントmmap
にあるように、カメラとアプリケーションの間でメモリを共有しています。これはうまくいきます。現在、私のプロセッサ (TI の DM3730) にも DSP があります。DSP を使用したいのですが、物理的な連続メモリが必要です。TI は、メモリを割り当てるためのドライバを提供しています。私の問題は、現在、mmap されたメモリを物理的な連続メモリにコピーするために多くの時間を失っていることです。メモリ自体を割り当てるべきではなく、割り当てたメモリを使用するように mmap に指示する方法はありますか?
私が何をしているのかを理解するために (もちろん、多くのコードが欠けていますが、V4L2 のドキュメントに非常に近いところに行き着きました。これで私の問題を理解するのに十分だと思います):
その後、フレームの準備が整うたびに、非連続メモリから連続メモリにメモリをコピーします。
フレームを物理的な連続メモリにすぐに入れるにはどうすればよいですか?
embedded-linux - v4l2 ビデオ キャプチャの例
これは私の最初の投稿であり、何か助けが得られることを願っています
samsung ok6410ボードとov9650 cmosカメラで組み込みLinuxに取り組んでいます
ビデオをキャプチャしてSDカードに保存する必要があります
ビデオをキャプチャする循環バッファーを使用したいのですが、それがいっぱいになると、新しいデータが古いデータを上書きできるようになります。
発生すると、キャプチャが 10 秒間継続してから停止するフラグがあります。ビデオは SD カードに保存され、フラグを上げる前の 10 秒と上げた後の 10 秒が含まれている必要があります。
v4l2 API仕様の公式サイトのキャプチャ例はこちら
http://free-electrons.com/kerneldoc/latest/video4linux/API.html
しかし、理解できない、または正しく理解しているかどうかわからない点がいくつかあります
この例では、4 つのフレーム バッファがあり、各バッファは 1 つのフレームを保持できます。これは正しいですか?
70 に初期化される変数 (frame_count) がありますが、これは、このプログラムを終了すると、70 フレームを含むビデオが得られるということですか?
fns (メインループ) と (読み取りフレーム) は何をしますか? 私は彼らが何をすべきかを知っていますが、書かれたコード、ループなどを理解できません..
このコードで fps を調整するにはどうすればよいですか? または、カメラのレジスタに値を書き込む必要がありますか?
ビデオをキャプチャした後、生データで満たされたバッファができます。それを圧縮するか、コーデックを使用して MPEG として保存したいのですが、YUYV の代わりにピクセル形式を圧縮 (MPEG など) に変更できますか? または、ビデオを圧縮するにはどうすればよいですか? コーデックまたは何?
バッファ内のこれらの生データをファイル .yuv に書き込むことはできますか? この形式のビデオを再生できるソフトウェアをいくつか見つけました。
キャプチャしたビデオを保持するために線形バッファーの代わりに循環バッファーを使用することは可能ですか?
投稿が長すぎることはわかっていますが、私は初心者であり、コードを書くのに役立つチュートリアルが見つかりません。
前もって感謝します
c - V4L2でのWebカメラストリームのキャプチャに失敗しました
Ubuntu10.4でV4L2フレームワークを使い始めています。
現在、私はいくつかのテストを行うためにウェブカメラを使用しています。私はこのドキュメントに従って開始しましたが、インストールは正常に機能しました。アプリケーション例をダウンロードしてコンパイルしました。問題はビデオ出力です。私は以下を使用して実行可能ファイルを呼び出します。
この出力が与えられた場合:
端子への出力:
これを修正する方法がわかりません。Webcam ChesseアプリケーションでWebカメラを使用できるため、問題はCコードであると思います。どんな助けでも大歓迎です。どうもありがとう!