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

0 ответов

Другие вопросы по тегам