みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

raspberrypi2 yoctoでalsasink(gstreamer1.0)

前回ALSAで音がなった。

aplay以外のコマンドでも音を鳴らしてみたいのでgstreamerのalsasinkで音を試してみる。

作業環境は、引き続き前回ALSAのものを利用する。

GStreamerのバージョン

gstreamerには0.10系と1.0系があり、1.0にバージョンを移行しようとしている。 ただ、あまり進んでいないのか、両方が混在したシステムが多い。 GStreamerのチュートリアルも0.10系をベースに書かれていたり、意外とGStreamer1.0の情報は見つけづらい印象。

しかし、ここでは将来性を考えて1.0系を導入する。

meta-gstreamer1.0について

yoctoではGStreamer1.0のレシピを集めたmeta-gstreamer1.0が存在する。 ただし、最近はメンテナンスされていないようで、 meta(無印)の方がバージョンが新しい。このため、meta-gstreamer1.0は導入しない。

GStreamer1.0関連のパッケージの追加

poky/meta-local/recipes-core/images/rpi-basic-image.bbappend の内容を以下のようにする。

IMAGE_INSTALL += " alsa-lib \
          alsa-utils \
          gstreamer1.0 \
          gstreamer1.0-libav \
          gstreamer1.0-plugins-base \
          gstreamer1.0-plugins-good \
          gstreamer1.0-plugins-bad \
          gstreamer1.0-plugins-ugly \
"

local.confの修正

以下の行を追加する。 これをしないと、LICENSE関連でエラーになる。

LICENSE_FLAGS_WHITELIST += "commercial"   

ビルド

bitbake

以下のコマンドでイメージを作成する。

$ bitbake rpi-basic-image

書き込み

SDに書き込む。

$ sudo dd
if=./tmp/deploy/images/raspberrypi2/core-image-weston-raspberrypi2.rpi-sdimg
of=/dev/sdb bs=40M

実行

サウンドドライバの組み込み

まずはドライバを組み込む

# modprobe snd_bcm2835

これを忘れると音が出ずにエラーになる。

alsasinkの動作確認

gst-launch-1.0というコマンドで任意のGStreamerパイプラインを実行することができる。 以下のようにして、alsasinkの動作を確認する。

# gst-launch-1.0 audiotestsrc ! alsasink

これで音が出れば成功。