次のように、かなり古い GStreamer 0.10.32 で、Python-GStreamer でプレーヤーを作成しています。
import pygst
pygst.require("0.10")
import gst
import gobject
self.__player = gst.parse_launch(
'filesrc name="source" location="/file/here.mp3" '
'! audio/mpeg, mpegversion=1, layer=3 '
'! ffdec_mp3 '
'! audioconvert ! audioresample ! volume name="vol" '
'! alsasink name="sink" sync=false')
正常に動作しますが、プレーヤーのバスからタグ メッセージが表示されません。id3 タグが必要です。そのため、caps フィルター ( audio/mpeg, mpegversion=1, layer=3
) をid3demux
に置き換えたところ、特定の MP3 でエラーが表示されました: " streaming task paused, reason not-linked (-1)
"。
またはを前に置いてそれらにリンクしてもidentity
、.queue
id3demux
何らかの理由で、mad
要素が私のプラットフォームで利用できません。
2 回目の置換が機能しないのはなぜですか、またはストリームから id3 タグを取得する別の方法はありますか?
編集:どうやら、これは特定のファイルが原因です。これらの MP3 の具体的な内容はまだわかっていません。これは、パイプラインを単純にテストしたときにも発生しgst-launch
ます。
GST_DEBUG=2 を使用すると、次のようになります。
0:00:00.046048767 32720 0x22388a0 WARN tagdemux gsttagdemux.c:680:gst_tag_demux_chain:<id3demux0> Downstream did not handle newsegment event as it should
0:00:00.046096615 32720 0x22388a0 WARN basesrc gstbasesrc.c:2625:gst_base_src_loop:<source> error: Internal data flow error.
0:00:00.046106087 32720 0x22388a0 WARN basesrc gstbasesrc.c:2625:gst_base_src_loop:<source> error: streaming task paused, reason not-linked (-1)
Capsid3demux
フィルターを元に戻すと役立ちますが、タグを取得することはありません。