Отправить видео синхронно в AppSink

Я использую gstreamer-java для отправки данных через UDP через пользовательскую AppSink. Вот как это эффективно настроить:

fileSrc ! streamTee ! displayQueue ! tsdemux ! demuxQueue ! (mpeg2dec || h264dec) ! videosink

а также

streamTee ! sendQueue ! udpSink

Я хотел бы отправить данные таким образом, чтобы имитировать прямой эфир. Я предполагаю, что единственный способ сделать это - синхронизировать отправку с воспроизведением через videoSink. То есть отправлять со скоростью воспроизведения 1,0x.

Тем не менее, установка udpSink's sync собственность, кажется, ничего не меняет. Я проверил, что пакеты отправляются как можно быстрее из-за sendQueue.

Нужно ли добавлять streamTee между другими элементами? Есть что-то очевидное, чего мне не хватает?

1 ответ

Решение

Перемещение streamTee в после displayQueue, похоже, решило эту проблему. Свойство sync, похоже, ничего не делает.

Похоже, что UDP-пакеты отправляются чуть-чуть впереди отображаемого видео на videoSink, но в конце любого видео любой длины он всегда на 0,5-1,0 секунды впереди. Так что, похоже, этого достаточно.

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