Адаптивная потоковая передача битрейта не работает в модуле nginx-vod на сервере NGINX

Я установил Nginx и настроил VOD для адаптивной потоковой передачи с помощью nginx-vod-module. При запросе файла master.m3u8 я получаю одни и те же файлы ts для разной пропускной способности сети.

Файл master.m3u8 имеет следующее содержимое:

 #EXTM3U
 #EXT-X-STREAM-INF:PROGRAMID=1,BANDWIDTH=1914317,RESOLUTION=1280x544,CODECS="avc1.64001f,mp4a.40.2"
  http://localhost/content/Input.mp4/index-v1-a1.m3u8

Конфигурация Nginx такая:

   location /content {
        vod hls;
        vod_mode local;

        root /usr/share/nginx/html;

        gzip on;
        gzip_types application/vnd.apple.mpegurl;

        expires 100d;
        add_header Last-Modified "Sun, 19 Nov 2000 08:52:00 GMT";
    }

Как я могу включить адаптивный битрейт с помощью nginx-vod-module и как лучше всего это проверить?


person Rachit Gupta    schedule 15.10.2015    source источник


Ответы (1)


  1. Вы кодируете несколько версий вашего Input.mp4 с разными разрешениями/битрейтами. Соотношение сторон должно быть одинаковым. Например: Input_high.mp4, Input_low.mp4

  2. Вы редактируете основной список воспроизведения m3u8 и добавляете каждое исполнение с определенным битрейтом и разрешением:

    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=...,RESOLUTION=...,CODECS="..."
    /content/Input_low.mp4.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=...,RESOLUTION=...,CODECS="..."
    /content/Input_high.mp4.m3u8
    
  3. Когда nginx-vod-module получает запрос на filename.mp4.m3u8, он автоматически сегментирует filename.mp4 для HLS и создает для вас список воспроизведения. Например: /content/Input_low.mp4.m3u8 вместо /content/Input_low.mp4

person aergistal    schedule 16.10.2015
comment
master m3u8 динамически обслуживается и генерируется. Я не хочу предварительно создавать список воспроизведения и файлы сегментов. Я сохранил только файл mp4. - person Rachit Gupta; 16.10.2015
comment
@RachitGupta Вы должны создать основной список воспроизведения вручную, он же тот, который содержит информацию о потоке. Медиа-плейлист автоматически создается для каждого файла. И вы должны кодировать свой файл в нескольких mp4 вариантах. См.: nginx.com/ wp-content/uploads/2015/06/ - person aergistal; 16.10.2015
comment
Что это значит? закодируйте файл в несколько вариантов mp4. Нужно ли ставить несколько mp4 разного качества? - person Rachit Gupta; 16.10.2015
comment
@RachitGupta Да, модуль не кодирует, а просто переупаковывает в HLS - person aergistal; 16.10.2015
comment
Мы ожидаем динамического адаптивного битрейта HLS, он доступен в nginX-Plus? - person Rachit Gupta; 16.10.2015
comment
Модуль NGINX Plus выполняет сегментацию, пакетирование и мультиплексирование в реальном времени из файлового контейнера MP4 в HLS/MPEG-TS без перекодирования содержимого. Источник: nginx.com/products/streaming-media-delivery - person aergistal; 16.10.2015