Временная метка файловой системы Gstreamer с точечной связью данных - PullRequest
0 голосов
/ 07 июня 2019

Я транслирую видео h265 по UDP с RTP. Конвейер получателя находится ниже, он декодирует и отображает видео, а также сохраняет его с помощью fileink.

udpsrc port=6014 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! tee name=t1 ! queue ! avdec_h265 ! xvimagesink sync=false async=false t1. ! queue ! mpegtsmux ! filesink location=%s.ts sync=true 

Беспроводная линия передачи данных, по которой передается это видео, иногда очень прерывистая. При низком качестве ссылки отображаемое видео имеет пиксельное или иное очень плохое качество. Когда ссылка полностью исчезла, отображаемое видео просто остается на последнем принятом кадре. Когда ссылка возвращается, отображаемое видео возвращается к нормальному состоянию. Это все нормально и ожидаемо.

У меня только небольшая проблема в сохраненном видео. При воспроизведении, например, в. VLC, таймер не продвигается в периоды без ссылки. Например, если связь была потеряна от t = 10 с до t = 30 с, то когда воспроизведение видео достигнет t = 10, оно будет выглядеть просто замороженным (без предварительной отметки времени) до t = 30, когда оно пропускается до 30. Я думаю, что в эти промежутки времени вообще нет данных; я хотел бы повторить последний кадр вместо этого. Во всяком случае для fileink сделать это? Или я могу что-то сделать в постобработке, чтобы исправить?

1 Ответ

0 голосов
/ 08 июня 2019

Зависит от ваших требований. Вы не можете просто «повторить» изображения в сжатом видеопотоке. Если бы вы использовали для воспроизведения сам GStreamer, я бы порекомендовал посмотреть на элемент videorate. Это будет повторять декодированные изображения для создания последовательного потока.

Для постпроизводственного решения может помочь добавление тихой звуковой дорожки. В этом случае проигрыватель VLC, вероятно, будет продвигать свой ползунок по желанию, поскольку он будет постоянно воспроизводить (неразборчиво) аудиоданные.

...