0

次のように、かなり古い 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、.queueid3demux

何らかの理由で、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フィルターを元に戻すと役立ちますが、タグを取得することはありません。

4

1 に答える 1

2

に頼ることになりましたplaybin2。タグメッセージを何らかの方法で送信する作業パイプラインを構築することができます。

于 2014-07-11T12:02:33.357 に答える