複数のトラックを含むビデオ ファイルを再生する playbin2 パイプラインがあります。current-video
プロパティを設定することで、現在再生中のトラックを変更できます。
current-video : Currently playing video stream (-1 = auto)
flags: readable, writable
Integer. Range: -1 - 2147483647 Default: -1
ただし、これを設定すると、ビデオがハングし、最終的に灰色になります。オーディオは再生し続けます。同僚は、パイプラインをフラッシュすると修正される可能性があると提案しましたが、それを行う唯一の方法は、現在の位置を でシークすることのようGST_SEEK_FLAG_FLUSH
です。シークの使用は機能しますが、面倒なようです。
g_object_set(m_playBin, "current-video", video, NULL);
GstClockTime = getCurrentTime();
gst_element_seek(m_playBin, m_player->rate(),
GST_FORMAT_TIME,
(GstSeekFlags)(GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE),
GST_SEEK_TYPE_SET, clockTime,
GST_SEEK_TYPE_NONE, GST_CLOCK_TIME_NONE)
を設定するときに何か間違ったことをしていcurrent-video
ますか? パイプラインをフラッシュする簡単な方法はありますか?
注: ビルドが簡単だったので、Ogg Theora ファイルをテスト用に使用しています。この問題が他の形式で発生するかどうかはわかりません。