Запись 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... очень интенсивно использует процессор (он предназначен для целей отладки).