Ответ 1
Это краткое руководство для потоковой передачи HLS с любым входным файлом или потоком:
Я следую подходу user1390208, поэтому я использую FFMPEG только для создания потока rtmp, который затем получает мой сервер для предоставления HLS. Вместо Unreal/Wowza/Adobe я использую бесплатный сервер nginx с модулем rtmp, который довольно прост в настройке. Вот как я делаю это кратко: Any input file or stream -> ffmpeg -> rtmp -> nginx server -> HLS -> Client
или более подробно:
входной видеофайл или поток (http, rtmp, whatever) → ffmpeg transcodes live to x.264 + aac, выходы в rtmp → nginx принимает rtmp и обслуживает HLS для пользователя (клиента). Таким образом, на стороне клиента вы можете использовать VLC или что угодно и подключаться к файлу .m3u8, который предоставляется nginx.
- Я следил за этим руководством по настройке для nginx.
- Это - мой конфигурационный файл nginx.
-
Вот как я использую ffmpeg для перекодирования моего входного файла в rtmp:
ffmpeg -re -i mydirectory/myfile.mkv -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream;
(.mkv 1080p с 5.1 звуком, в зависимости от вашего ввода, вы должны использовать более низкие битрейты!)
Откуда вы получаете поток rtmp?
- Файл? Тогда вы можете использовать именно мой подход.
-
Любой сервер X с потоком Y? Затем вам нужно изменить команду ffmpeg на:
ffmpeg -re -i rtmp://theServerX/yourStreamY -c:v libx264 -b:v 5M -pix_fmt yuv420p -c:a:0 libfdk_aac -b:a:0 480k -f flv rtmp://localhost:12345/hls/mystream;
или если ваш поток rtmp уже закодирован h.264/aac, вы можете попробовать использовать опцию
copy
в ffmpeg для потоковой передачи содержимого непосредственно в nginx.
Как вы видите в моем файле конфигурации nginx:
- Мой сервер rtmp имеет "приложение" под названием "hls". Эта часть, описывающая, где nginx прослушивает поток ffmpeg rtmp, и почему ffmpeg передает в
rtmp://localhost:12345/hls/mystream;
- Мой http-сервер имеет
location /hls
. Это означает, что в VLC я могу подключиться кhttp://myServer:80/hls/mystream.m3u8
для доступа к потоку HLS.
Все ясно? Счастливые потоки!