2015-09-29 2 views
4

Я установил Nginx Plus и настроил HLS для потоковой передачи. В то время как запрос файла m3u8 я получаю сообщение об ошибке:Nginx Plus не потоковая передача HLS

2015/09/29 13:32:34 [error] 5814#5814: *1 open() "/usr/video/hls/CODECS="avc1.42e00a,mp4a.40.2"" failed (2: No such file or directory) 

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

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=545600,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2" 
/usr/video/hls/myvideo_low.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2" 
/usr/video/hls/myvideo_high.m3u8 

Конфигурация Nginx является:

location /hls { 
     root /usr/video; 
     hls; 
     hls_fragment   5s; 
     hls_buffers    10 10m; 
     hls_mp4_buffer_size  1m; 
     hls_mp4_max_buffer_size 5m; 
     types { 
      application/vnd.apple.mpegurl m3u8; 
      video/mp2t ts; 
     } 
     add_header 'Access-Control-Allow-Origin' '*'; 
     add_header 'Cache-Control' 'no-cache'; 
} 

В браузере я я получаю предупреждение: «Фрагменты TS не найдены».

ответ

2

Для того, чтобы динамически создать ts сегменты из статического файла, как mp4 имя файла и расширение должно присутствовать в m3u8 списка воспроизведения файла:

myvideo_high.mp4.m3u8 для myvideo_high.mp4

Для:

myvideo_high.m3u8

Предполагается, что сегменты уже существуют.


Serving Media with NGINX Plus Whitepaper показан пример для созданного вручную m3u8 варианта списка воспроизведения, который неверно вследствие форматирования страницы (строка оберточной):

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=545600,RESOLUTION=416x234, 
CODECS="avc1.42e00a,mp4a.40.2" 
/hls/myvideo_low.mp4.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,RESOLUTION=640x360, 
CODECS="avc1.42e00a,mp4a.40.2" 
/hls/myvideo_high.mp4.m3u8 

THe #EXT-X-STREAM-INF информации должна быть на одной линии (без символов новой строки):

#EXTM3U 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=545600,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2" 
/hls/myvideo_low.mp4.m3u8 
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2" 
/hls/myvideo_high.mp4.m3u8 
+0

Спасибо за ответ, но #EX T-X-STREAM-INF уже существует на одной линии. –

+0

Двойная проверка, потому что она пытается открыть '/ usr/video/hls/CODECS =" avc1.42e00a, mp4a.40.2 ", что согласуется с неверным списком воспроизведения. – aergistal

+0

Я проверил и настроил его правильно. Нужно ли создавать файл /hls/myvideo_low.mp4.m3u8 вручную или сервер nginx сделает это за нас –

Смежные вопросы