Запись PTS/DTS в поток MPEG (Gstreamer)

Итак, для проекта GNURadio я отправляю видео MPEG-2, мультиплексированное с данными PSIP, на мой телевизор. Фактическая передача указанных данных и видео в порядке, однако видео не декодируется должным образом. Это в основном пустое место с мигающими блоками повсюду, с быстро движущимися сценами с большим количеством "мусора". Это выглядит примерно так, за исключением того, что большая часть черного цвета, а "блоки" случайным образом появляются и исчезают. Это должно выглядеть так.

Я использую videtestsrc, прежде чем добавить его в свой микшер для тестирования. Я пробовал avconv, и по какой-то причине у него нет этой проблемы.

Вот трубопровод, также ниже:

VIDEOFORMATIN='video/x-raw, format=UYVY, width=1920, height=1080, framerate=60/1, interlaced='true''
gst-launch-1.0 -v videotestsrc do-timestamp=true is-live=true ! $VIDEOFORMATIN \
! videoconvert ! queue ! \
avenc_mpeg2video bitrate=15000000 rc-max-rate=17000000 rc-min-rate=14000000 rc-buffer-size=300000 \
rc-buffer-aggressivity=0.25 ! \
filesink location=video.mpeg

Он хорошо воспроизводится в mpv, SMPlater, и TSReader может воспроизводить видео, однако в выводе команды mpv появляется ошибка "

"[libav] NULL: start time is not set in estimate_timings_from_pts"

а также...

"No PTS found! Making something up"

Есть идеи, что может случиться? Как я могу написать правильные значения PTS/DTS, когда это живой источник? Да, я должен использовать MPEG-2 и gstreamer.

2 ответа

Как вы заметили, вы пропускаете значения PTS/DTS, которые являются существенными временными метками для декодера: он сообщает, когда декодировать и представлять кадр. Я не думаю, что вы можете сгенерировать его вручную, как это обычно делается во время операции мультиплексирования.

Кажется, что mpv преуспеть в том, чтобы подражать им, вот почему у вас есть чистый рендер, но, очевидно, ваш телевизор не может.

Вы пытались смешать с ffmpeg?

Это также может быть связано с тем, что конвейер кодирования находится под серьезным давлением.

Вы получаете какие-либо предупреждения с этим конвейером кодирования? с GST_DEBUG=3 например. Какую версию GStreamer вы используете?

Генерация потока 1920x1080@60fps с помощью videotestsrc... очень интенсивно использует процессор (он предназначен для целей отладки).

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