ケース
ファイルから継続的に読み取り、appsrc 要素にフィードします。ソース - apprc
PLAYING 状態の GStreamer パイプラインがあります。apprcキューをクリアする必要があることを意味するボタンを押したときに、パイプラインをフラッシュ/クリーンする必要があります。再生は、現在追加されているバッファまたはフラッシュ後に追加されたバッファから開始する必要があります。
使用した API を発行
すると、false が返されました。フラッシュできません。
fprintf(stderr, "The flush event start was <%d>",gst_element_send_event(GST_ELEMENT (pipe), gst_event_new_flush_start());
fprintf(stderr, "The flush event stop was <%d>",gst_element_send_event(GST_ELEMENT (pipe), gst_event_new_flush_stop()));
上記は両方とも 0 を返しました。これは false を意味します。この false の理由は何ですか?
API を使用してパイプライン内のデータをフラッシュするにはどうすればよいですか? または、再生をスキップするための他の API はありますか?
試した
- 数ミリ秒のギャップがある場合とない場合のパイプラインへの 送信
gst_event_new_flush_start ()
と送信gst_event_new_flush_stop ()
gst_event_new_seek (1.0, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH, GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, 0);
- パイプラインを NULL に設定してから、もう一度 PLAYING に設定します
これらはすべて機能しませんでした。