RK3568 開発ノート (11): buildroot ファームウェアの開発バージョンは、ffmpeg rtsp プレーヤーのデモを移植します

オリジナル記事の場合、転載の際は出典を明記してください
この記事のブログアドレス:https://hpzwl.blog.csdn.net/article/details/133022813

Red Fatty Internet Technology Blog Collection: 開発技術集 (Qt 実践技術、Raspberry Pi、3D、OpenCV、OpenGL、ffmpeg、OSG、マイコン、ソフトウェアとハ​​ードウェアの組み合わせなどを含む) を継続的に更新中...

ロックチップ開発コラム

前の記事:「RK3568開発記(10):開発ボードのbuildrootファームウェアを移植してアプリケーションデモを開発、フルスクリーン表示を開始
次の記事: ご期待ください...


序文

  ターゲット開発タスクには、rtsp カメラを再生する機能もあります。もちろん、これをより適切に実行するには、5 秒ごとにカメラを開く再試行など、rtsp 再生が失敗した後の再試行をサポートする必要があります。インターネットに接続した後に再度開くことができることを確認してから、この機能を実現してください。


デモ

  画像の説明を追加してください


補充する

  ソリューションの buildroot のおかげで、ffmpeg4.1.3 が移植されました。
  ここに画像の説明を挿入します


カメラハードウェア接続

  ここに画像の説明を挿入します


ffmpeg4.1.3をコンパイルする

  ここに画像の説明を挿入します

  プログラムの移植プロセス中に、デフォルトの ffmpge に swscale.h が欠落していることが判明しました。これは処理が非常に困難でした。
  ここに画像の説明を挿入します

  パッチを適用する方法を考え、ffmpeg4.1.3 をクロスコンパイルして、再度パッチを適用しました。

ステップ 1: ダウンロードして解凍する

  http://ffmpeg.org/releases/Unzip
  ここに画像の説明を挿入します
  :
  ここに画像の説明を挿入します

ステップ 2: 構成する

  クロスコンパイラの導入
  ここに画像の説明を挿入します

export PATH=$PATH:/home/yang/work/src/topeet-qt5.14.2/topeet-qt5.14.2-aarch64/host/bin

  次のように構成を調整します。

./configure --prefix=/home/yang/work/src/topeet-qt5.14.2/topeet-qt5.14.2-aarch64/host/aarch64-buildroot-linux-gnu/sysroot --arch=aarch64  --target-os=linux  --enable-cross-compile --cross-prefix=aarch64-buildroot-linux-gnu- --enable-shared

  ここに画像の説明を挿入します

ステップ 3: make をコンパイルする

make -j4

  ここに画像の説明を挿入します

ステップ 4: make install をインストールする

make install

   ここに画像の説明を挿入します

ステップ 5: libswsale イメージのスケーリングおよび変換モジュールを確認します。

  ここに画像の説明を挿入します

  しかし、コンパイルはまだ機能しません。
  ここに画像の説明を挿入します

  もう耐えられなくなったので、Qt プロジェクトの依存関係の完全なセットを直接再抽出しました。
  プレフィックス アドレスが変更されていることに注意してください。

./configure --prefix=/home/yang/work/src/ffmpeg-aarch64 --arch=aarch64  --target-os=linux  --enable-cross-compile --cross-prefix=aarch64-buildroot-linux-gnu- --enable-shared

  もう一度調べて、ffmpeg コードのみに取り込みます。
  ここに画像の説明を挿入します

  コードモジュールで取得します。
  ここに画像の説明を挿入します

  pri 依存関係を追加します。
  ここに画像の説明を挿入します

  コンパイルすると、今回はヘッダー ファイル エラーは発生しませんでしたが、新たなエラーが発生しました。
  ここに画像の説明を挿入します

  ここに画像の説明を挿入します

  コンパイルして渡します。
  ここに画像の説明を挿入します

  コンパイルの依存関係が解決されます。
  ここに画像の説明を挿入します

ステップ 6: 開発ボード上の ffmpeg4.1.2 を ffmpeg でカバーする

  新しいライブラリを上書きする必要があります。そうしないと、次のようなメッセージが表示されます。
  ここに画像の説明を挿入します

  sftp は /root ディレクトリを制限するため、これを直接パッケージ化し、手動でコピーして開発ボードに上書きします。
  ここに画像の説明を挿入します

  開発ボードにコピーします。
  ここに画像の説明を挿入します

  実際、ここではヘッダー ファイルは必要ありません。ターゲット ボードがコンパイルされない場合、ヘッダー ファイルは必要ありません。lib を直接解凍し、フォルダー内のすべてを /usr/lib にコピーするだけです。下に示された:
  ここに画像の説明を挿入します

  次に、次を実行します。
  ここに画像の説明を挿入します

  成功したら、インターフェイスを確認します。
  ここに画像の説明を挿入します


ソフト デコード rtsp のテストを開始する

Ffmpeg は rtsp ソフトウェアをプルして h364 ディスプレイ (1080p) をデコードします

  次に、ソフト デコード rtsp 再生を開始します。
  ここに画像の説明を挿入します

  1 秒再生すると 1 秒ずつ増加し、徐々に遅くなり、灰色に変わり、再び開始されます。
  ここに画像の説明を挿入します

  CPU を確認します。1080p をデコードすると CPU が直接爆発します。
  ここに画像の説明を挿入します

  このアプローチは機能しません。

Ffmpeg は rtsp ソフトウェアをプルして h364 をデコードし、360p (640x360) を表示します

  サブストリームに切り替えます:
  ここに画像の説明を挿入します

  遅延は1秒~1.5秒程度
  ここに画像の説明を挿入します

  次のように:
  ここに画像の説明を挿入します

  次に 2 つのデコーダをテストして開きましたが、基本的に遅延は影響しませんでした。その後、アプリケーションを実行して 50 ミリ秒間データをデコードして操作しました。問題はなかったので、これを最初にデモします。


まとめ

  今回の目標は基本的に達成されました。同時に、rk が mpp を使用して rtsp をプルし、h264 パケットを rgba にデコードできることが測定されました。バッファ層を直接ブラッシングする方が、遅延と CPU 消費量が最も低くなります。 qtにも表示されますが、若干の遅延が発生しますので、10~30ms程度長くなるはずですが、実際の結果はテストする必要があります。


前の記事:「RK3568開発記(10):開発ボードのbuildrootファームウェアを移植してアプリケーションデモを開発、フルスクリーン表示を開始
次の記事: ご期待ください...


オリジナル記事の場合、転載の際は出典を明記してください
この記事のブログアドレス:https://hpzwl.blog.csdn.net/article/details/133022813

おすすめ

転載: blog.csdn.net/qq21497936/article/details/133022813