как обслуживать поток mpegts для m3u8 с Express - PullRequest
0 голосов
/ 03 октября 2018

У меня есть mpegts файлы 0.ts, 1.ts, 2.ts, которые я помещаю на сервер, и я хочу воспроизвести эти файлы как m3u8.m3u8 выглядит следующим образом:

#EXTM3U
#EXT-X-VERSION:5
#EXT-X-TARGETDURATION:7
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.25,
http://example.com/ngx/0.ts # <-- this works
# http://example.com/express/0.ts # <-- cant play m3u8 if changed to this line
#EXTINF:6.25,
# http://example.com/ngx/1.ts  # <-- this works
http://example.com/express/1.ts  # <-- this also works
#EXTINF:6.25,
# http://example.com/ngx/2.ts # <-- this works
http://example.com/express/2.ts # <-- this also works
#EXTINF:6.25,
# http://example.com/ngx/3.ts # <-- this works
http://example.com/express/3.ts # <-- this also works
#EXT-X-ENDLIST

http://example.com/ngx/0.ts обслуживает файл ts, помещенный в /var/www/html с nginx сервером, заголовок ответа от почтальона выглядит следующим образом: response header from postman of ts file served by nginx

http://example.com/express/0.ts - это сервер express.js, который обслуживает файл ts следующим образом:

res.writeHead(200, { "Content-Type": "video/mp2t" })
fs.createReadStream(tsFile).pipe(res);

, а заголовок ответа почтальона выглядит следующим образом: response header from postman of ts file served by express.js

Я мог воспроизводить файлы ts, загруженные отдельно с сервера express.js, однако, когда я изменил первый URL-адрес в m3u8 для загрузки с сервера express.js вместо nginx сервер, m3u8 не может воспроизводиться.

Я подозреваю, что это как-то связано с форматом или метаинформацией файла, который подается из express.js, что поток неправильно распознается m3u8 как mpegts данные.Посоветуйте, пожалуйста, как правильно подать файл ts в виде потока.

...