0

最近の Gstreamer1.0 を含め、GI ライブラリを使って簡単な音楽プレーヤーを作りたいと思っています。インターフェイスは、2 つのボタン (再生/一時停止) と、現在の再生時間をシークするためのスケールで構成されています。

これはインターフェースの簡単な画面です

私はパイプラインと要素のことをかなりよく理解しており、必要な再生時間(ユーザーがスケールの値を変更したとき)を求める方法も理解しましたが、スライダー/スケールを自動的に更新する最良の方法は何だろうか.ファイルが再生されます。ここで古い API を使用して実装されている 1 つの方法は、現在のプレーヤーの位置を定期的に読み取り、スライダーの位置を更新するタイマーを使用することです。

Glib.timeout_add(100, update_slider_callback)

非常にエレガントだとは思いません。新しい GI API を使用してこれを行うより良い方法はありますか?

編集:好奇心旺盛な人のために、ここに実装しました

4

1 に答える 1

1

これは、少なくとも pitivi でこれがどのように実装されているかの大まかな方法​​であり、gst / python コードの良いリファレンスです。

正確な場所は次のとおりです。

https://git.gnome.org/browse/pitivi/tree/pitivi/utils/pipeline.py#n390

位置のクエリはカスタム パイプライン サブクラスにカプセル化されていますが、コードは似ています。

この utils フォルダを見てください。そこにはたくさんの優れたものが含まれています :)

エレガンスに関して言えば、メイン スレッドで位置を繰り返しクエリすることは、私にはそれほどハックには思えません。

于 2014-12-29T04:05:47.677 に答える