Мультиплексирование HEVC-видео в транспортный поток MPEG с помощью FFMPEG

#ffmpeg #command-line-arguments #mpeg #hevc #transport-stream

#ffmpeg #аргументы командной строки #mpeg #hevc #транспортный поток

Вопрос:

Я хотел бы мультиплексировать видео, закодированное в формате HEVC, в MPEG-Transportstream.

У меня есть видео, закодированное с помощью кодировщика x265.

 x265 raw.y4m --output coded.hevc
  

Я хочу мультиплексировать это видео в транспортный поток MPEG.
Я пробовал это, среди прочего, таким образом:

 ffmpeg -fflags  genpts -i coded.hevc -c:v copy -f mpegts transportstream.ts 
  

К сожалению, появляется это сообщение об ошибке, и transportstream.ts пуст.

 [mpegts @ 0x1fa76a0] Timestamps are unset in a packet for stream 0. This is deprecated and will stop working in the future. Fix your code to set the timestamps properly
[mpegts @ 0x1fa76a0] first pts value must be set
av_interleaved_write_frame(): Invalid data found when processing input
  

Для моей цели необходимо выполнить два шага отдельно. Не могли бы вы помочь мне, пожалуйста, узнать правильные параметры для мультиплексирования видео?

Заранее спасибо.

Ответ №1:

Работает двухэтапный процесс:

 ffmpeg -i coded.hevc -c copy coded.mp4

ffmpeg -i coded.mp4 -c:v copy transportstream.ts 
  

Комментарии:

1. После выполнения этого метки времени представления видео являются хронологическими для некоторого декодирования, хотя они не должны. Из-за этого большая часть декодера не может свободно воспроизводить видео.