2013-12-04 3 views
1

Дело
Чтение из файла непрерывно и подача элемента appsrc. Источник - appsrcКак очистить трубопровод gstreamer

У меня есть конвейер GStreamer в состоянии PLAYING. Теперь нужно, чтобы конвейер очистился/очистился, когда я нажимаю кнопку, что означает, что очередь appsrc должна быть очищена. Воспроизведение должно начинаться с того, какие буферы теперь добавлены в/или были добавлены после флеша.

выпуск
API, который я использовал, возвратил false. Я не могу флешировать.

Оба указанных выше значения 0. Это означает, что это неверно. В чем причина этого ложного?

Как я могу попытаться выполнить промывку данных в конвейере некоторым 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, а затем снова ИГРАТЬ

Все это не могло работать.

+0

У меня такая же проблема. Вам удалось найти решение? – Arnaud

+0

@Arnaud Пожалуйста, прочитайте ответ – user2618142

ответ

0

Это не работает для меня, потому что я использовал 0,10 V в gstreamer.If нет ограничений использовать 0.10 версию gstreamer, пожалуйста, используйте 1,2 версия GStreamer.

Однако в v 0.10 промывочный поиск обычно работает в качестве замены для промывки трубопровода.

При использовании 1.2v оба API gst_event_new_flush_start() и gst_event_new_flush_stop() работают. В этом случае вы можете использовать флеш напрямую.

В любом случае вы должны быть в состоянии смыть. Создайте внутренний API, в котором вы выполняете поиск, и используйте его как API-интерфейс Flush.

В gstreamer-devel mailing list есть сообщение о поведении flush в двух версиях.

Смежные вопросы