|
From: NAKAJIMA T. <nak...@ni...> - 2013-02-23 16:35:56
|
中島です。 しばらく間が空きましたが、giを使ったGStreamerサンプル移植を継続中です。 サンプルフォルダlaunchにあるmp3parselaunch.cを選び、コード自体はすぐに (若干変更すれば)動いたのですが、サンプル内容がかなりの環境依存の もののようで、そのままpull requestしてよいか迷っています。 ご意見いただければ幸いです。 オリジナルのコードは"filesrc name=my_filesrc ! mad ! osssink"という パイプライン文字列をparseして再生するだけなのですが、私の環境(Fedora 18) ではosssinkのおかげで、以下のエラーが起きます。 /home/nakajima/Projects/ruby/gtk/ruby-gnome2/gobject-introspection/lib/gobject-introspection/loader.rb:80:in `invoke': mad0 を osssink0 へリンクできません (GLib::Error) from /home/nakajima/Projects/ruby/gtk/ruby-gnome2/gobject-introspection/lib/gobject-introspection/loader.rb:80:in `block (2 levels) in define_module_function' from mp3parselaunch.rb:58:in `<main>' そもそも私の環境では $ gst-launch filesrc ! mad ! osssink が同じエラーになり、以下の2つの問題があります。 1) mad と osssinkのフォーマットが合わない 2) そもそもossドライバがない これは 1) audioconvertエレメントをはさむか、alsasinkなどに変える 2) PulseAudio OSSラッパーのpadspを使って起動する ことで回避できることがわかりました。 サンプルプログラム内のパイプライン文字列を "filesrc name=my_filesrc ! mad ! alsasink" に変えるか、もしくは "filesrc name=my_filesrc ! mad ! audioconvert ! osssink" に変更し、padsp ruby 〜 で起動することで動きました。 なるべくオリジナルに忠実に移植したいと思っているのですが、 変更しないと動かなそうなコードを提出するのは少し気が引けています。 このサンプルは変更すべきでしょうか? (やるとしたらosssink→alsasinkもしくはpulsesinkかなと) なお、現在のコード全体はこちらです。 https://github.com/ted-n/ruby-gnome2/blob/launch/gstreamer-gi/sample/mp3parselaunch.rb |