Отправить видео синхронно в 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 секунды впереди. Так что, похоже, этого достаточно.