Я могу запустить такую команду на обычных видео (h264 на mkv):
avconv -i videofile.avi -c copy -flags +global_header -segment_time 60 -f segment "videofile-part."%03d".mp4"
, но на видео с этим форматом и контейнером (те, которые у меня есть по крайней мере) это не получится:
MPEG-4 в файле .avi
, если я проверю его, я получу ключевые кадры, которые игнорируются сплиттером:
ffprobe videofile.avi -show_entries frame=key_frame,pict_type,pkt_pts_time -select_streams v -of compact -v 0 | grep frame=1
(из этого совета https://stackoverflow.com/a/48687236/1422630)
и я получаю многое из этого:
"frame | key_frame = 1 | pkt_pts_time = N / A | pict_type = I"
нормальное видео будет выводить строки, подобные этой:
"frame | key_frame = 1 | pkt_pts_time = 44.252542 | pict_type = I"
, поэтому для работы avconv требуется действительное значение "pkt_pts_time" ...
В качестве альтернативы (не требуется командаинструмент линии):
любой быстрый способ добавить правильные ключевые кадры (pkt_pts_time со значением) к видео, чтобы его можно было правильно разделить с помощью avconv?
или, может быть, мне следует быстро преобразовать большое видео (скопироваввидео поток) в формат, который имеет нормальные ключевые кадры, обнаруженные avconv?
Obs.:
Я использую Linux UBUntu.
Я создаю сценарий bash с использованием avconv
, но другие скриптовые инструменты (инструменты командной строки) приемлемы, если они работают.
PS.: будет лучшена unix stackexchange?