Pull to refresh
7
0
Send message

А какие были исходные требования?


  • в каких форматах файлы исходники;
  • в каких форматах нужно отдавать;
  • какая пропускная способность канала.
  1. А ngx_http_mp4_module поймет mkv? А avi? А прочие?

Только mp4.


Так что надеяться на запросы с "?start=***"

Можно сделать подмену или редирект. А если пришли заголовки range-bytes, то сразу редиректить. ngx_http_mp4_module умеет отрабатывать range-bytes.


hls позволит склеить [первый файл с 123457 байта до конца]+[второй файл до 7777 байта]

Позволяет. В playlist.m3u8 вставляете произвольные куски фрагментов любых видео какpart.ts (MPEG-TS).


#EXTM3U
#EXT-X-TARGETDURATION:13
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.000,
http://cdn.example.com/video/1/v1-1.ts
#EXTINF:10.000,
http://cdn.example.com/video/1/v1-2.ts
#EXTINF:10.000,
http://cdn.example.com/video/1/v2-1.ts
#EXTINF:10.000,
http://cdn.example.com/video/1/v2-2.ts
#EXTINF:10.000,
http://cdn.example.com/video/1/v2-3.ts
#EXT-X-ENDLIST
Nginx отлично справляется с раздачей видео из коробки.

1) >1 — отдается всегда целиком (файл полностью);

Посмотрите в сторону раздачи mp4 через псевдо-стриминг (`ngx_http_mp4_module`).

```nginx
location ~ \.1080\.mp4$ {
mp4;
mp4_buffer_size 20m;
mp4_max_buffer_size 40m;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
expires max;
directio 10m;
limit_rate 1024m;
limit_rate_after 10m;
}
```
Получаем все плюшки nginx, в том числе range-bytes и контроль скорости отдачи.

Полный пример: habrahabr.ru/post/265897/?#2-razdayuschiy-server

2) >2 — отдается одним «виртуальным файлом» вида [конец первого файла]+[некоторое к-во файлов полностью]+[начало последнего файла]. Формат mpegts, каждый набор закодирован одинаково, поэтому можно просто склеивать части.

Посмотрите в сторону hls. В плейлист `playlist.m3u8` добавляете любые фрагменты, а потом nginx отдает все как маленькие статические файлы.

Пример `playlist.m3u8`:
```
#EXTM3U
#EXT-X-TARGETDURATION:13
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10.000,
cdn.example.com/video/1/part1.ts
#EXTINF:10.000,
cdn.example.com/video/1/part2.ts
#EXTINF:10.000,
cdn.example.com/video/1/part-100.ts
#EXT-X-ENDLIST
```

Information

Rating
Does not participate
Registered
Activity