この記事では、i.MX 8M Miniのビデオ開発事例を中心に、GStreamerに基づくビデオキャプチャ、コーデック、アルゴリズム処理、表示および保存事例、GigE産業用カメラテスト命令、H.265ビデオハードウェアデコード機能デモンストレーション命令などを紹介します。
注: このケースの評価版は、NXP i のクアッドコア ARM Cortex-A53 + シングルコア ARM Cortex-M4 ヘテロジニアス マルチコア プロセッサ設計に基づく高性能評価ボードである Chuanglong Technology TLIMX8-EVM を使用しています。 .MX 8M ミニ、
コアボードと評価ボードで構成されます。ARM Cortex-A53 (64 ビット) メイン プロセッシング ユニットのメイン周波数は最大 1.6 GHz、ARM Cortex-M4 リアルタイム プロセッシング ユニットのメイン周波数は最大 400 MHz です。プロセッサーは最新の 14nm テクノロジーを採用し、1080P60 H.264 ビデオ ハードウェア コーデック、1080P60 H.265 ビデオ ハードウェア デコード、および GPU グラフィックス アクセラレータをサポートします。コアボードは専門的なPCBレイアウトと高温および低温テストによって検証されており、安定性と信頼性が高く、さまざまな産業アプリケーション環境に対応できます。正面の外観は以下の通りです。
3ギゲ_キャプチャケース
この場合、評価ボードのギガビット イーサネット ポートは GigE 産業用カメラに接続され、画像取得、画像表示、画像保存の機能を実現します。カメラモデル: acA720-290gm、ブランド: Basler、解像度は最大 720x540 に設定でき、フレームレートは 291fps に達します。カメラの詳細については、公式 Web サイトのリンクを参照してください: www.baslerweb.com/cn/products/cameras/area-scan-cameras/ace/aca720-290gm。
この場合の測定フレーム レートは、720x540@138fps としてキャプチャおよび表示し、720x540@31fps としてキャプチャおよび保存します。
テスト ケース gige_capture は、製品ドキュメントの「4-software document\Demo\base-demos\」パスにあります。テストの便宜のために、検証済みのテスト プログラムの実行可能ファイルが製品ドキュメントに提供されています。このファイルは gige_capture の bin ディレクトリにあり、ソース コードは gige_capture の src ディレクトリにあります。
3.1 GigE 産業用カメラの構成
このセクションでは、Basler が公式に提供する pylonSDK 開発キットを使用して、PC Ubuntu 上で GigE 産業用カメラの IP アドレス取得方法や取得フレーム レートなどのパラメーターを設定します。
「gige_capture\pylonSDK\x86_64\」ディレクトリにある pylonSDK-5.1.0.12682-x86_64.tar.gz 圧縮パッケージを Ubuntu の任意のパスにコピーし、圧縮パッケージが存在するディレクトリに移動して次のコマンドを実行して解凍します。現在のディレクトリに。
ホスト番号 tar -xvf pylonSDK-5.1.0.12682-x86_64.tar.gz -C 。
図40
図41
GigE 産業用カメラの電源をオンにし、ネットワーク ケーブルを介して PC と GigE 産業用カメラを同じルータに接続し、次のコマンドを実行して IpConfigurator ツールを実行し、IP アドレスの取得方法を構成します。
ホスト番号 cd pylon5/bin/
ホスト番号 ./IpConfigurator
図42
IpConfigurator インターフェイスで、[更新] をクリックして GigE 産業用カメラを更新し、識別します。構成インターフェイスから、GigE 産業用カメラが静的 IP (静的 IP) と動的 IP (DHCP) の 2 つのモードをサポートしていることがわかります。今回は、テストに動的 IP モードが使用され、DHCP オプションを選択し、[保存] をクリックして保存します。テストで取得した IP アドレスは 192.168.0.165 です。
図43
IpConfigurator ツール ウィンドウを閉じ、次のコマンドを実行して PylonViewerApp ツールを実行し、取得フレーム レートおよびその他のパラメーターを構成します。
ホスト番号 ./PylonViewerApp
図44
以下に示すように、PylonViewerApp インターフェイスで、GigE ネットワーク カメラ デバイスをダブルクリックして選択し、ユーザー レベルで [エキスパート] を選択し、クリックしてカメラ設定列を開きます。
図45
クリックして「構成セット」列を開き、次の図に従って初期化します。
「構成セット」列の「ユーザー セット セレクター」オプションと「デフォルト スタートアップ セット」オプションを「デフォルト ユーザー セット」に設定します。
図46
クリックして「トランスポート層」列を開き、カメラのネットワークパケット構成を設定します。
「トランスポート層」列の「パケットサイズ」を1500に設定します。「パケット間遅延」は 4500 に設定されています。「パケット間遅延」パラメータ値はキャプチャ フレーム レートに影響します。実際の状況に応じて変更してください。
メニュー バー ボタンをクリックして継続的に取得すると、PylonViewerApp を通じて GigE ネットワーク カメラによって収集された画像を表示できます。
図47
[取得コントロール] 列の [露出時間] 値を設定して、カメラの露出時間を調整できます。値が大きいほど、フレーム レートが低くなります。テストでは、カメラのデフォルト値 3000us を使用します。これは、フレーム レートに対応します。 274fps。
図48
カメラでキャプチャした画像サイズは「AOI Controls」列で設定でき、デフォルトのサイズは 720x540 です。
図49
3.2 画像取得テスト
評価ボードの RGMII ETH インターフェイスと GigE 産業用カメラをネットワーク ケーブルを介して同じルータに接続します。評価ボードはデフォルトで HDMI ディスプレイをサポートしています。最初に HDMI ディスプレイを正しく接続してください。
備考: GigE 産業用カメラが静的 IP で構成されている場合、評価ボードと GigE 産業用カメラをネットワーク ケーブルで直接接続し、評価ボードと GigE 産業用カメラを同じネットワーク セグメントに設定する必要があります。
図50
「gige_capture\lib\」ディレクトリ配下のライブラリファイル圧縮パッケージ libpylon_arm64.tar.gz を評価ボードファイルシステムの任意のディレクトリにコピーし、圧縮パッケージが存在するディレクトリに移動し、以下のコマンドを実行してファイルを解凍します。 「/usr/lib/」ディレクトリ。
ターゲット番号 tar -xvf libpylon_arm64.tar.gz -C /usr/lib
図51
GigE 産業用カメラの電源を入れ、評価ボードのファイル システムに入り、bin ディレクトリにある実行可能ファイル gige_capture を評価ボードのファイル システムの任意のパスにコピーしてください。gige_capture 実行可能ファイルが配置されているディレクトリで次のコマンドを実行して、プログラム パラメータの説明を表示します。
ターゲット番号 ./gige_capture --help
図52
次のコマンドを実行して、LAN 内の GigE 産業用カメラをスキャンし、GigE 産業用カメラの画像取得フレーム レートをテストします。
ターゲット番号 ./gige_capture -m scan
図53
そして、次のコマンドを実行して Weston インターフェイスを閉じ、GigE 産業用カメラによって収集された画像をディスプレイに表示します。画像表示が鮮明でない場合は、ノブを回してカメラレンズの絞りと焦点距離を調整してください。GigE 産業用カメラは、設定された解像度 720x540 でリアルタイムに収集します。環境の影響により、一定の変動が発生します。ハードウェアの性能やネットワーク環境など。
ターゲット# systemctl [email protected]
ターゲット# ./gige_capture -m display -o /dev/fb
図54
図55
このテストの CPU 使用率は次のとおりです。
図56
次のコマンドを実行して、GigE 産業用カメラでキャプチャした画像を指定したパスのファイルに Gray8 形式で保存します。収集および保存されるフレーム数はデバイスの読み取りおよび書き込み速度に影響されますが、実際の測定値は 31fps です。
ターゲット番号 ./gige_capture -m save -o /home/root/test.gray8
図57
保存したファイルを Windows にコピーし、「gige_capture\tools\yuvplayer.exe」プログラムを使用して test.gray8 ファイルを開き、「サイズ -> カスタム」をクリックし、画像形式を幅 720、高さ 540 に設定し、「カラー」をクリックします。 -> Y」の場合、再生ボタンをクリックすると以下のような画像が表示されます。
図58
図59
図60
3.3 事例の編集
gige_capture のディレクトリ全体を Ubuntu の任意のパスにコピーします。「pylonSDK\arm64\」ディレクトリ内の pylonSDK-5.1.0.12682-arm64.tar.gz が解凍されていることを確認してください。case src ディレクトリに入り、次のコマンドを実行します。 SDK 環境変数をロードしてコンパイルします。
ホスト番号 ソース /home/tronlong/SDK/environment-setup-aarch64-poky-linux
ホスト番号 の作成
図61
コンパイルが完了すると、現在のディレクトリに実行可能ファイルが生成されます。
図62
4 H.265ビデオハードウェアデコード機能デモ
i.MX 8M Mini プロセッサには、ハードウェアで H.265 ビデオ ファイルをデコードできる VPU (Video Processing Unit) G2 デコーダが含まれており、最大 1080P60 をサポートします。
この章では主に、i.MX 8M Mini が Gstreamer フレームワークに基づいており、VPU G2 デコーダーを使用して MKV (HEVC)、MP4 (HEVC) ビデオ ファイル、HEVC (H.265 オリジナル) などの H.265 ビデオ ファイルをデコードすることを説明します。フォーマット)ビデオファイル。
図 63
i.MX 8 Gstreamer の公式リファレンス ドキュメントは、製品ドキュメント「6-開発リファレンス ドキュメント\NXP 公式リファレンス ドキュメント\i.MX 8 GStreamer User Guide.pdf」です。このドキュメントでは、Gstreamer の一般的に使用されるいくつかのプラグイン (プラグイン)、i.MX 8 用の特定のプラグイン、およびコーデックの例を紹介します。
4.1 MKVビデオファイルのデコード
評価ボードの HDMI OUT インターフェイスを HDMI ディスプレイに接続し、製品ドキュメントの「4-Software Information\Tools\Video\」ディレクトリにある bbb-1920x1080-cfg02.mkv (1080P60 with audio) ビデオ ファイルを評価ボードのファイルシステム。ビデオ ファイルが配置されているパスを入力し、次のコマンドを実行してデコードすると、MKV デコードされたビデオを HDMI ディスプレイに表示できます。
ターゲット番号 gst-launch-1.0 -v filesrc location=./bbb-1920x1080-cfg02.mkv ! matroskademux name=demux demux.video_0 ! 列 !h265パース!ヴプデック!列 !waylandsink ウィンドウ幅=1920 ウィンドウ高さ=1080
図64
HDMI表示効果は以下の通りです。再生が終了するか、「Ctrl + C」を押してビデオ再生を終了すると、シリアル デバッグ ターミナルはビデオ出力フレーム レートを求めるプロンプトを表示します。
図65
図66
この場合のビデオ デコードのパイプライン ワークフローを以下に示します。
図67
パイプラインは 6 つの要素 (プラグイン) で構成され、各要素は独自の機能を実装します。
(1) filesrc: ファイルを読み込みます。
(2) matroskademux: MKV ファイルを解析し、データを抽出します。
(3) キュー: データをキャッシュします。
(4) h265parse: H.265 インタープリタを使用します。
(5) vpudec: VPU デコーダを使用して H.265 ビデオ ファイルをデコードします。
(6) waylandsink: 表示デバイスを選択して出力し、出力解像度を 1920 x 1080 に設定します。
図68
図69
bbb-1920x1080-cfg02.mkv はオーディオ付きのビデオ ファイルです。ビデオとオーディオを同時に再生したい場合は、Chuanglong Technology TL3106 オーディオ モジュールを J10 インターフェイスに挿入し、モジュールの LINE OUT インターフェイスをヘッドフォンまたはスピーカー。
図70
評価ボードのファイル システムに入り、次のコマンドを実行し、ビデオとオーディオを同時に再生するには、コマンドにオーディオ デコードと再生パラメータを追加します。
ターゲット番号 gst-launch-1.0 -v filesrc location=./bbb-1920x1080-cfg02.mkv ! matroskademux name=demux demux.audio_0 ! 列 !デコードビン!オーディオ変換!オーディオリサンプル!autoaudiosink demux.video_0 ! 列 !h265パース!ヴプデック!列 !waylandsink ウィンドウ幅=1920 ウィンドウ高さ=1080
図 71
図 72
この場合のビデオとオーディオの同時デコードのパイプライン ワークフローを以下に示します。
図 73
4.2 MP4ビデオファイルのデコード
評価ボードの HDMI OUT ポートを HDMI ディスプレイに接続し、製品ドキュメントの「4-Software Documentation\Tools\Video\」ディレクトリにある Elecard_about_Tomsk_part1_HEVC_1080p.mp4 (1080P25) ビデオ ファイルを評価ボードのファイル システムにコピーしてください。ビデオファイルが存在するパスを入力し、次のコマンドを実行してデコードすると、MP4 デコードされたビデオを HDMI ディスプレイに表示できます。
ターゲット# gst-launch-1.0 -v filesrc location=./Elecard_about_Tomsk_part1_HEVC_1080p.mp4 ! qtdemux name=demux demux.video_0 ! 列 !h265パース!ヴプデック!列 !waylandsink ウィンドウ幅=1920 ウィンドウ高さ=1080
図 74
図 75
HDMI表示効果は以下の通りです。再生が終了するか、「Ctrl + C」を押してビデオ再生を終了すると、シリアル デバッグ ターミナルはビデオ出力フレーム レートを求めるプロンプトを表示します。
図 76
図 77
コマンドパラメータの説明:
(1) filesrc: ファイルを読み込みます。
(2) qtdemux: MP4 ファイルを解析し、データを抽出します。
(3) キュー: データをキャッシュします。
(4) h265parse: H.265 インタープリタを使用します。
(5) vpudec: VPU デコーダを使用して H.265 ビデオ ファイルをデコードします。
(6) waylandsink: 表示デバイスを選択して出力し、出力解像度を 1920 x 1080 に設定します。
図 78
4.3 HEVCビデオファイルのデコード
評価ボードの HDMI OUT ポートを HDMI ディスプレイに接続し、製品ドキュメントの「4-Software Documentation\Tools\Video\」ディレクトリにあるサンプル_1920x1080.hevc (1080P30) ビデオ ファイルを評価ボードのファイル システムにコピーしてください。動画ファイルが存在するパスを入力し、以下のコマンドを実行してデコードすると、HEVC(H.265独自形式)デコードされた映像をHDMIディスプレイに表示できます。
ターゲット# gst-launch-1.0 -v filesrc location=sample_1920x1080.hevc ! 列 !h265パース!ヴプデック!列 !waylandsink ウィンドウ幅=1920 ウィンドウ高さ=1080
図 79
HDMI表示効果は以下の通りです。再生が終了するか、「Ctrl + C」を押してビデオ再生を終了すると、シリアル デバッグ ターミナルはビデオ出力フレーム レートを求めるプロンプトを表示します。
図 80
図 81
パラメータの説明:
(1) filesrc: ファイルを読み込みます。
(2) キュー: データをキャッシュします。
(3) h265parse: H.265 インタープリタを使用します。
(4) vpudec: VPU デコーダを使用して H.265 ビデオ ファイルをデコードします。
(5) waylandsink: 表示デバイスを選択して出力し、出力解像度を 1920 x 1080 に設定します。
組み込みアプリケーションについてもっと知りたい場合は、Tronlong Chuanglong Technology に注目してください~