2

TCP パイプラインで GStreamer を使用してストリーミング アプリケーションを作成しており、開始、一時停止、および停止を実装しています。

しかし問題は、シークできないことです。サーバー側から再生値を変更しようとし、次にクライアント側で試し、最後に両方の値を同時に変更しようとしましたが、すべての場合うまくいきません。再生を一時停止してから続行しようとしましたが、何も起こりません。

シークとボリュームでこの問題が発生しています。助けてください、どこでも検索しましたが、うまくいくものは見つかりませんでした。

これは私がシークに使用するコードです

self.pipeline.seek_simple(gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, time)

4

2 に答える 2

0

バスがシーク イベントをリッスンするのを忘れている可能性があります。パイプラインをセットアップした後、これを入れてみてください:

self.bus = self.pipeline.get_bus()
self.bus.add_signal_watch()   

これが機能しない場合は、さらにコードを投稿してください。

于 2012-12-12T21:36:36.230 に答える
0

まだ見つからない場合は、おそらくこれでうまくいくかもしれません。

Gstreamer でのシークは、 seek() および seek_simple() メソッドで行われます。シークできるようにするには、Gstreamer にどのような種類のシークを行うべきかを伝える必要もあります。次の例では、gst.FORMAT_TIME フォーマット定数を使用します。これは、ご想像のとおり、時間シークを行います。:D また、query_duration() および query_position() メソッドを使用して、ファイルの長さとファイルが現在再生されている時間を取得します。Gstreamer はデフォルトでナノ秒を使用するため、それに合わせて調整する必要があります。

以下に例を示します: GStreamer を使用したシーク

于 2010-11-09T00:44:55.960 に答える