Armadilloフォーラム

サンプルイメージから作成したコンテナ上での GStreamer の利用について

tetsuo.yamashita

2022年2月8日 19時30分

USB カメラ映像を VPU エンコードすることを目的に製品マニュアルを参照して試行していますが、GStreamer が利用できません。
作成したコンテナに入り、gst-launch-1.0 コマンドを実行するも command not found になります。
使用しているコンテナイメージは配布されている at-debian-image-v1.0.2.tar です。
GStreamer を使うには何か足りない手順がありますでしょうか?

「8.3. VPU や NPU を使用する」→「9.1.3. アットマークテクノが提供するイメージを使う」→「9.1.9.5. VPUを扱う」の手順で行っています。
また「9.3.2. GStreamer 実行用コンテナを作成する」も参考にしています。

以下、コンテナ作成時のスクリプトです。(.sh にして実行しています)

podman run -itd --name=gst_sample \
--env=XDG_RUNTIME_DIR=/tmp \
--env=LD_LIBRARY_PATH=/opt/firmware/usr/lib/aarch64-linux-gnu \
--device=/dev/dri \
--device=/dev/galcore \
--device=/dev/mxc_hantro \
--device=/dev/mxc_hantro_vc8000e \
--device=/dev/ion \
--device=/dev/input \
--device=/dev/tty1 \
--volume=/sys:/sys \
--volume=/dev:/dev \
--volume=/mnt:/mnt \
--volume=/run/udev:/run/udev \
--volume=/opt/firmware:/opt/firmware \
--cap-add=SYS_TTY_CONFIG \
localhost/at-debian-image:latest /bin/bash

以下、コンテナ作成時の標準出力です。

armadillo:~/my_script# ./make_gst_sample_container.sh
[  154.280490] IPv6: ADDRCONF(NETDEV_CHANGE): vethb65b6eb8: link becomes ready
[  154.287615] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[  154.294182] cni-podman0: port 1(vethb65b6eb8) entered blocking state
[  154.300546] cni-podman0: port 1(vethb65b6eb8) entered disabled state
[  154.307057] device vethb65b6eb8 entered promiscuous mode
[  154.312468] cni-podman0: port 1(vethb65b6eb8) entered blocking state
[  154.318827] cni-podman0: port 1(vethb65b6eb8) entered forwarding state
[  154.540464] cgroup: podman (1469) created nested cgroup for controller "memory" which has incomplete hierarchy support. Nested cgroups may change behavior in the future.
[  154.555621] cgroup: "memory" requires setting use_hierarchy to 1 on the root
[  154.565052] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
[  154.589546] kmem.limit_in_bytes is deprecated and will be removed. Please report your usecase to linux-mm@kvack.org if you depend on this functionality.
c4ac2fd61bb87b8529ec809617c5f5bb86ddeed643f6c356830c5c5e0e9c0adf

以下、コンテナ作成後の podman ps です。

armadillo:~/my_script# podman ps
CONTAINER ID  IMAGE                             COMMAND     CREATED             STATUS                 PORTS       NAMES
c4ac2fd61bb8  localhost/at-debian-image:latest  /bin/bash   About a minute ago  Up About a minute ago              gst_sample

以下、コンテナに attach して gst-launch-1.0 実行です。

armadillo:~/my_script# podman attach gst_sample
root@c4ac2fd61bb8:/# gst-launch-1.0
bash: gst-launch-1.0: command not found
root@c4ac2fd61bb8:/#

以上、よろしくお願いいたします。

コメント

at_ohsawa

2022年2月8日 20時22分

申し訳ございません
製品マニュアルにパッケージをインストールするステップが抜けております。

コンテナ内で次のコマンドを実行してください。

# apt update
# apt install gstreamer1.0-imx gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-imx gstreamer1.0-x libgstreamer-gl1.0-0 libgstreamer-imx libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-imx-tools

あるいは、デモアプリケーション本体が余計ですが次のパッケージを
インストールしても、上記相当のgstreamerのパッケージが依存するため
インストールされます。

apt install armadillo-demo-experience

マニュアルは改訂予定です。

tetsuo.yamashita

2022年2月9日 13時54分

> 製品マニュアルにパッケージをインストールするステップが抜けております。
>
> コンテナ内で次のコマンドを実行してください。
>

> # apt update
> # apt install gstreamer1.0-imx gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-imx gstreamer1.0-x libgstreamer-gl1.0-0 libgstreamer-imx libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 gstreamer1.0-tools gstreamer1.0-imx-tools
> 

上記を実施し、GStreamer のインストールができました。
また、gst-launch-1.0 を用いて、任意の h.264 ファイルのデコード、HDMI 接続のディスプレイへの表示まで確認できました。
ありがとうございました。