問題タブ [v4l]
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.
java - MPEG-TS PSI 解析
EN 300 468で指定されている EIT テーブル セクションを構築しようとしています。パケットを (Java で) データ構造に正常に解析し、各パケットのペイロードにアクセスできます。
テーブル セクションがパケット間でどのように分割されているか理解できません。仕様がやや混乱/不確実です。TS パケットのストリームを PID でフィルタリングできると仮定して、そのようなテーブルを構築するプロセスは何ですか?
設定されていることを理解しpayload_unit_start_indicator
ています。ペイロード フィールドの最初のバイトが新しいセクションの最初のバイトへのポインタであることを示しています。それはペイロードの先頭からのオフセットですか?
たとえば、TS パケットを受信し、それをセクションの開始として識別した場合、バイトを配列に読み取り、ヘッダーからセクションの長さを決定してから、ますます多くの TS パケット ペイロードで配列を埋め続けますか?まで同じ PID のbytesRead == sectionLength
?
読んでくれてありがとう、アドバイスや助けがあれば大歓迎です!:)
c - ビデオを書き込むときのOpenCVの問題カメラ
OpenCV を使用してラップトップ カメラでビデオを書き込もうとしていますが、次のエラーが発生します。
私が使用しているコードは次のとおりです。
ご覧のとおり、CV_FOURCC を使用してすべてのコーデックをテストしましたが、それでもエラーが表示されます。
私は何を間違っていますか?コーデックに問題がありますか?
c - フレームとアラーム信号の待ち方
ウェブカメラに問題があります。ハードウェアの可能性もありますが、そうではないと確信しています。すべてのアプリでストリームを表示できますが、突然フリーズします。問題が発生したときの使用済みアプリからの次の出力のため:
コードと興味深い部分をチェックアウトしました。
そこから、SYNC_TIMEOUT が問題になる可能性があると結論付けました。値は 3 秒で、これで十分だと思われます。
私の要求は、コードを変更して、フレームを無期限にブロックしないようにすることです。
100 ミリ秒以内にフレームが到着しない場合は、タイムアウトになり、GUI がそれ自体を更新する機会が与えられます。すべてのデバイスでホイールを解放できるわけではないため、アプリは GUI をブロックせずにそのようなデバイスをサポートする必要があります。
1秒未満の待機を行うにはどうすればよいですか?
v4l2 デバイスはこれで非常にうまく機能します:
しかし、私は v4l1 デバイスを持っています。
linux - Debian 8 での v4l2 ビルド エラー
これらの手順に従ってビデオ 4 Linux をインストールしています。
http://www.linuxtv.org/wiki/index.php/How_to_Obtain,_Build_and_Install_V4L-DVB_Device_Drivers
しかし、ビルドすると、次のエラーが表示されます。Debian 8 仮想マシン。
linux-device-driver - Linux V4L ドライバー - ポーリング カメラの入力形式
私は Linux カーネルの開発に慣れていませんが、カーネル ドライバーを更新して、アプリケーションが読み取ることができるステータス コードを返すようにしています。これには、ドライバーがハードウェアを 1 秒間に数回ポーリングして、送信されているカメラ形式 (PAL、NTSC、またはなし) を確認する必要があります。
しかし、私はこれがどのように達成されるかについて途方に暮れています。ドライバーがハードウェアと通信する方法は理解していますが、このデータをアプリケーションに渡す方法がわかりません。このタイプの動作には ioctl() 呼び出しの使用が必要ですか、それともファイル読み取り操作ですか? また、アプリケーションが IOCTL または読み取り関数を呼び出しており、ハードウェアが応答するまで待機する必要がある場合、パフォーマンスの問題は発生しますか?
また、追加情報として、カーネルの 2.6 バージョンに取り組んでいます。「Linux Device Drivers 3rd Ed」に取り組んでいますが、この特定の問題に対処する方法について目立ったものはありません。LDD3 では、ドライバーにコマンドを送信するためだけに ioctl() のように聞こえます。これは V4L ドライバーなので、ファイルを開くと、必要なステータス情報ではなく、画像データが返されると思います。
linux - Linux DVB カーネル demux バッファで利用可能なデータ サイズを照会する方法は?
Linux-DVB フロントエンド/demux ドライバー ペアを使用して、ライブ ブロードキャスト TS からユーザー ランドに再多重化されたプログラム ストリームを取得しています。ポーリングと読み取りの組み合わせを使用していますが、コンテキストの切り替えとカーネルからユーザー空間へのコピーのペナルティを最小限に抑えるために、データが特定のサイズよりも大きい場合にのみデータを読み取りたいと考えています。
demux バッファーで使用可能なデータ サイズを照会する方法も、ポーリング通知サイズを指定するオプションも見つかりませんでした。
そのような機能を知っている人はいますか? そうでない場合、DVB API でそのような機能を要求するのは不合理ですか?
よろしく、
android - ndk および V4L を介して Android で USB Web カメラをプレビューする
Android ndk から USB ウェブカメラにアクセスしようとしています。
Android システムには V4L カーネル モジュールがあるため、V4L ライブラリを使用するのが最適であると考えました。それらは ndk にバンドルされているため、それらを私のプロジェクトに含めることは大したことではありませんでした。
私の問題は次のとおりです。
/dev/video4 を開き、ioctl をそのファイル記述子に送信する必要がありますが、/dev/video4 にアクセスする権限がありません。次の3つのことを考えました。
1) /dev/video4 に対する権限がないのはなぜですか? 私のアプリは android.permission.CAMERA パーミッションを使用するため、アプリを実行するユーザーはカメラ グループに属している必要があり、カメラ グループには /dev/video4 に対する r+w パーミッションがあるのに、なぜ開けないのですか?
2) UsbManager クラスで可能である Java 側からファイル記述子を取得しようとしましたが、そのファイル記述子ポイントは /dev/bus/usb/001/004 を行います。Java 側から /dev/video4 の許可を要求する方法はありますか? または、ユーザー空間 V4L ライブラリを含めて、ポインタを /dev/bus/usb/001/004 の汎用 USB デバイスに渡すことはできますか?
3) Android バージョンの OpenCV には V4L サポートが付属していますか? /dev/video4 にアクセスせずにカメラをプレビューするために使用できますか?
誰かが前にこのようなことを試したことがありますか?
また、libusb と libuvc を使用してカメラに接続するライブラリ ( https://github.com/saki4510t/UVCCameraなど) があることは知っていますが、このライブラリは非常に不安定で、満足のいく結果が得られません。
v4l2 - ポーリングループの代わりにコールバックを使用した V4L2 プレビュー
V4L2 の調査を開始したばかりで、見つけることができるすべてのサンプルでは、ループを使用してカメラから画像をポーリングしています。ループする代わりにコールバックを登録する方法はありますか? いつ画像をポーリングするかがわかりません。また、常にポーリングするのは得策ではないように思えますか?
これは私が現在見ているサンプルです> https://linuxtv.org/downloads/v4l-dvb-apis/capture-example.html メインループの一部がブロックされ、次のフレームを待っていますか?