ffmpeg でデュアルカメラ録画を実現するにはどうすればよいですか?

指示

1. コマンド ffmpeg -framerate 25 -f v4l2 -i /dev/video4 Recording1.mp4 によるビデオ録画は失敗しました。ffmpeg の公式ドキュメントによると、-r と -framerate は同じ機能を持っていますが、実際のテストでは異なることが示されています。-framerate は入力を制限するために使用され、-r は出力を制限するために使用されます。

2. ffmpeg -r 25 -f v4l2 -i /dev/video4 Recording1.mp4 コマンドを使用してビデオを録画できますが、フレーム エラーやフレームの繰り返しなどの問題が発生します。

3. ffmpeg -f v4l2 -r 25 -thread_queue_size 128 -i /dev/video4 -vcodec libx264 -b:v 800k-preset Ultrafast Recording1.mp4 を使用して、デュアル カメラ ビデオ録画を同時に実現します。

パラメータの説明:

⚫ -f 出力形式を設定します。出力形式は v412 フレームです
(前に見つけたコマンドはすべて、iOS、macOS、watchOS、tvOS でマルチメディア データを処理するためのフル機能のフレームワークである avfoundation フレームワークを使用します。この中で使用される v412 フレームワークコマンドは、Linux カーネルのビデオ デバイス ドライバー用のフレームワークであり、アプリケーション層に統一インターフェイスを提供し、さまざまな複雑なハードウェアの柔軟な拡張をサポートします。

⚫ -r フレーム レートを設定します。フレーム レートを 25fbs に設定します。

⚫ -thread_queue_size
(thread_queue_size は、その後に指定された最初の入力に適用されます。「thread_queue_size」という用語はすべての入力に適用でき、アプリケーション レベルで決定されます。待機中にその入力からのパケットの数をキューに入れることができます。 ffmpeg は、メイン スレッドでそれらを受信して​​処理します。いくつかのキャプチャ デバイス (主に dshow) は、受信フレームがその入力のアプリケーション レベルのキューに転送されるのを待機している間、「rtbufsize」を使用して格納します。これら 2 つのオプションは調整されませんもう一方の値なので、手動で設定する必要があります。デフォルトは 8 です。一般的な警告: スレッド メッセージ キューのブロック。thread_queue_size オプションを上げることを検討してください (現在の値: 8)。この問題を解決するには、公式の説明: このオプションは次のように設定します。ファイルまたはデバイスからの読み取り時にキューに入れられるパケットの最大数 (低遅延/高レートのリアルタイム ストリームでは、パケットがタイムリーに読み取られないとドロップされる可能性があります。この値を増やすことでこれを防ぎます)。

⚫ -i 入力ストリームを設定、ビデオからの入力を設定4

⚫ -vcodec ビデオエンコーダを設定します。(-vcodec と-codec:v の値は同じです)

エンコーダは、特定のエンコード形式を実装するライブラリ ファイルです。特定の形式でのビデオ/オーディオのエンコードとデコードは、その形式のエンコーダがインストールされている場合にのみ実現できます。

FFmpeg の組み込みビデオ エンコーダの一部を次に示します。

  • libx264: 最も人気のあるオープンソース H.264 エンコーダー
  • NVENC: NVIDIA GPU ベースの H.264 エンコーダー
  • libx265: オープンソース HEVC エンコーダー
  • libvpx: Google の VP8 および VP9 エンコーダ
  • libaom:AV1 エンコーダ

⚫ -B:v ビデオビットレート

⚫ -preset は出力ビデオの品質を指定します。これはファイルの生成速度に影響します。次の値が使用可能です。

超高速、超高速、超高速、高速、高速、中、低速、低速、超低速、プラセボ 高速から低速まで、超高速のトランスコーディング レートが最も速く、ビデオが最もぼやけることがよくあります。

⚫ Recording1.mp4 出力ビデオの名前とファイル タイプ ffmpeg-formats を使用して、ffmpeg でサポートされているすべてのファイル タイプを取得できます。ファイルの前の注釈は次のとおりです。

D.=多重化をサポート(ビデオ/オーディオのカプセル化をサポート)
.E=多重化をサポート(ビデオ/オーディオのカプセル化解除をサポート)

方法:

ソフトウェア:

⚫Ubuntu:

1.開発ボードのネットワーキング

2. sudo apt-gat update は apt-gat を最新バージョンにアップグレードします (オプション)

3. sudo apt-get install ffmpeg は apt-gat を使用して ffmpeg を取得します

4. 関連するコマンドを入力します

ハードウェア:

Forlinx 自作のアナログ カメラ モジュールを接続して 2 台のカメラをサポートします。Video4 ~ 7 は TVIN によって生成されたノードで、左上が video7 に対応し、左下が video6 に対応し、右下が video5 に対応し、右上が video4 に対応します。実際の状況に応じて選択してください。

元は www.forlinx.net で公開されています。

www.forlinx.net