Я скачиваю много потоков, так как скорость интернета слишком низкая для просмотра в высоком разрешении. Когда я скачиваю поток, я нахожу файл .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