オリジナル記事の場合、転載の際は出典を明記してください
この記事のブログアドレス:https://hpzwl.blog.csdn.net/article/details/133022813
ロックチップ開発コラム
前の記事:「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