GStreamer 0.10.0

ついにFedora Developmentにも更新が来たので、BMPxのオーディオバックエンドをGStreamerにしてビルドしてみることにした。とりあえず以下のようにしてYUMで更新。パッケージ名が変わっていたので、一度削除してから入れてみた。

# yum remove gstreamer
# yum install gstreamer08-devel gstreamer08-plugins-devel gstreamer-plugins-base-devel gstreamer-plugins-good-devel

しかし、ただGstreamerを有効にしてビルドしただけでは再生できない。とりえあえず基本に立ち返ってgst-launchを使って音を出すようにしようとした。
gst 0.10からはpluginsがそのライセンス・品質によって分かれているが、"mad" *1が入っているgstreamer-plugins-ugly*2Fedoraのポリシーに合致しないので当然のことながら含まれていない。ということで、まずパッケージのビルドから始めることにした。livnaをレポジトリに加えてから、以下のパッケージをインストールし、

  • PyXML
  • libsidplay-devel
  • libid3tag-devel
  • a52dec-devel
  • lame-devel
  • libmad-devel
  • mpeg2dec-devel

http://gstreamer.freedesktop.org/src/gst-plugins-ugly/ からgst-plugins-ugly-0.10.1.tar.gzをダウンロードする。それから、アーカイブ内にあるスペックファイルを取り出し、

sed -e '2s/gstreamer010/gstreamer/' gst-plugins-ugly.spec | sed -e '8s/1.gst/1/' > new.spec

のような感じで少々修正を加え、rpmbuildし、インストールする。
この作業のおかげで、rootにおいてのみ、"gst-launch filesrc location=foo.mp3 ! mad ! alsasink"は正常に実行できるようになり、音がしっかり出るようになったのだが、未だに一般ユーザーでは

ERROR: Pipeline doesn't want to pause.
ERROR: from element /pipeline0/alsasink0: Could not open resource for writing.
Additional debug info:
gstalsasink.c(523): gst_alsasink_open: /pipeline0/alsasink0:
Playback open error: Permission denied

などとエラーが出る。"permission"といってもどこを変更すれば良いのか見当がつかない。さらに、BMPxは

** Message: don't know how to handle application/x-id3

を出して落ちるという有り様。*3ちなみにAeonの方はというと、rootでは上記のエラーが出て、一般ユーザーでは

aeon-INFO: (II) GStreamer outsink 'alsasink': probing...
aeon-INFO: (WW) GStreamer outsink 'alsasink': ...probe failure. 'alsasink' can't be used

と、そもそもalsasinkが使えない。rootではこの部分は大丈夫だから、permissionの問題なんだろう。
ここまではFC5Test1における話だったのだが、FC4ではどうかというと、freshrpmにあるgstreamer-plugins-extra-audioをインストールすると、root・一般ユーザー共に、"gst-launch filesrc location=foo.mp3 ! mad ! alsasink"で音を鳴らすことが出来る。AeonはMP3を再生しようとするとSegmentation Faultで落ちる。
とりあえず、"gst-launch filesrc location=foo.mp3 ! mad ! alsasink"でうまく音が鳴っただけよしとしておこう。金曜日の夜から無駄に時間をかけた割にはあんまりだな。

*1:詳しくは、japan.linux.com | GStreamer概要を参照。

*2:最初gstreamer-ffmpegを使おうとしたのだが、うまく行かなかった。

*3:BMPx, Aeon共にgst-0.8のライブラリを参照しているのかもしれない。