@Horosh294

Как кодировать видео в ffmpeg для передачи по HLS?

Вдохновлялся этой статьей: https://playerjs.com/docs/ru=mp4hlsencoding
У меня есть видео в mkv в 2к качестве, я хочу для него сделать качества 360 480 720 1080 2160 ну и чтобы они HLS передавались. В этом видео еще 8 аудиодорожек. Получилась у меня такая команда
ffmpeg -y -i 1.mkv -map_metadata -1 -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:a:2 -map 0:a:3 -map 0:a:4 -map 0:a:5 -map 0:a:6 -map 0:a:7  -vcodec libx264 -pix_fmt yuv420p -vsync 1 -async 1 -color_primaries 1 -color_trc 1 -colorspace 1 -vf scale="'w=if(gt(a,16/9),640,-2):h=if(gt(a,16/9),-2,360)'" -ab 128k -maxrate 800k -bufsize 1200k -bufsize 4200k -acodec aac -ac 2 -ab 128k -f mp4 -movflags +faststart out1.mp4

По выходу получается mp4 файл в котором находится 8 аудиодорожек, но если я правильно понял для моей задачи в итоге внутри должно быть помимо этого еще и 5 видеодорожек все соответствующего качества. Я правильно понимаю?
Какая тут команда нужна?
И еще: не понимаю в статье написано"hls доступен по адресу: localhost/hls/output.mp4/index.m3u8" , а этот самый файл откуда он возмется? Мне его самому создавать? Как вообще это работает?
  • Вопрос задан
  • 640 просмотров
Решения вопроса 1
tumbler
@tumbler
бекенд-разработчик на python
Ну вообще должно получиться 5 отдельных качеств, в каждом - 8 аудиодорожек и 1 видеодорожка, каждая своего размера и битрейта. Т.е. берете вашу команду и меняете в ней битрейт и размер кадра.
При этом ваша команда делает mp4-файл, из него можно сделать HLS с помощью nginx-vod-module, либо переделать команду ffmpeg так (-f hls), чтобы сразу получить набор TS-сегментов плюс индексный M3U8-файл.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы