как объединить файлы ts в mp4 с помощью ffmpeg?

как объединить файлы ts в mp4 с помощью ffmpeg?

Я скачиваю много потоков, так как скорость интернета слишком низкая для просмотра в высоком разрешении. Когда я скачиваю поток, я нахожу файл .m3u8, который указывает на файлы TS. Затем я использую следующую команду:

ffmpeg -i stream.m3u8 vid.mp4

Это работает. Но это занимает очень много времени, потому что это фактически перекодирует все, хотя это уже правильный формат. Чтобы избежать перекодирования, я могу использовать эту команду:

ffmpeg -i stream.m3u8 -vcodec copy -acodec copy vid.mp4

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

Мой вопрос:Как создать видео без полного перекодирования, но С хорошим рендерингом VLC на любом этапе?

решение1

Вы просите ffmpeg перекодировать файлы в mp4 вместо того, чтобы объединить их в один поток. Вам нужноконкатенироватьв , temp.tsа затем преобразовать его в .mp4с помощью -codec copy.

Также я считаю, что на втором этапе вам необходимо преобразовать adtsв .aac-bsf:a aac_adtstoasc

решение2

Если вы не перекодируете, вы не сможете изменить ключевые кадры и т. д. видео, что приведет к описанному вами поведению.

Однако вы можете попробовать что-то вроде:

ffmpeg -i stream.m3u8 -codec:v "libx264" "-preset" "ultrafast" output.mp4

Помните, что при выигрыше в скорости вы теряете в качестве, поэтому «быстро» может быть лучше...

решение3

Посмотрите мой вариант с ffmpeg mp4joiner

Скриншот

Связанный контент