Изменение текущего видео во время воспроизведения в Playbin2 останавливает видео
У меня есть конвейер 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 для тестирования, поскольку его было легко собрать, поэтому я не уверен, что эта проблема проявляется в других форматах.