snark13
Member
День добрый
Есть несколько вопросов (и предложений) по HLS стримам.
У нас настало время апргрейда версии (использовался билд 972, сейчас пробуем самые актуальные).
Обнаружили одну из проблем -
Раньше сразу по запросу {streamname}/{streamname}.m3u8 возвращался плейлист со списком TS сегментов, сейчас возвращается мастерплейлист с сылками на плейлисты уже разных уровней кодирования (если включен ABR). Но у нас нет необходимости в ABR - нам нужен HLS только одного уровня без перекодирования AS IS. Но и в этом случае
мы получаем мастер плейлист с сылками на один плейлист.
Проблема в том что перед WCS у нас стоит NGINX на котором стоит модуль аутентификации который проверяет параметр authkey в query и только с корректным authkey разрешается дальше проброс к WCS (проброс идет со всеми query оригинального запроса). Но в возвращаемом мастер плейлисте находится ссылка на плейлист с сегментами и в этом url уже query от оригинального запроса нету и запрос клиента к этому (второму плейлисту) уже режется на стороне NGINX.
Вопрос - можно ли сделать одну из опций -
или сделать опционально возможным старый формат плейлиста HLS (без отдельного мастер плейлиста)
или в URL к последующим плейлистам добавлять query от запроса к мастер плейлисту (к сегментам можно так же добавлять а можно и не добавлять) ?
сейчас как временное решение помогает добавление такого параметра в конфиг файл -
в этом случае параметр authkey из запроса к мастер плейлисту передается дальше -
запрос к
/PCamCR0001H/PCamCR0001H.m3u8?authkey=JWToken
в плейлисте получаю
но таким образом можно передать только один параметр из запроса, а иногда надо что бы передавалось много.
Второй вопрос -
формат плейлиста с сегментами -
сейчас я получаю такой плейлист -
1) непонятно откуда берется EXT-X-PROGRAM-DATE-TIME - можно как-то через конфиг указать что бы он не добавлялся в плейлист ?
2) стрим идет с ключевыми кадрами каждую секунду, в конфиге прописано
то есть я хочу что бы сегменты были по 2 секунды, но WCS режет стрим на сегменты по одной секунде (в 972 билде сегменты были именно той длины как я указывал - 2 секунды).
p.s. Полная секция конфига для HLS -
Спасибо.
Есть несколько вопросов (и предложений) по HLS стримам.
У нас настало время апргрейда версии (использовался билд 972, сейчас пробуем самые актуальные).
Обнаружили одну из проблем -
Раньше сразу по запросу {streamname}/{streamname}.m3u8 возвращался плейлист со списком TS сегментов, сейчас возвращается мастерплейлист с сылками на плейлисты уже разных уровней кодирования (если включен ABR). Но у нас нет необходимости в ABR - нам нужен HLS только одного уровня без перекодирования AS IS. Но и в этом случае
Code:
hls_ll_enabled=false
ll_hls_fragmented_mp4=false
hls_new_http_stack=true
hls_abr_enabled=false
Проблема в том что перед WCS у нас стоит NGINX на котором стоит модуль аутентификации который проверяет параметр authkey в query и только с корректным authkey разрешается дальше проброс к WCS (проброс идет со всеми query оригинального запроса). Но в возвращаемом мастер плейлисте находится ссылка на плейлист с сегментами и в этом url уже query от оригинального запроса нету и запрос клиента к этому (второму плейлисту) уже режется на стороне NGINX.
Вопрос - можно ли сделать одну из опций -
или сделать опционально возможным старый формат плейлиста HLS (без отдельного мастер плейлиста)
или в URL к последующим плейлистам добавлять query от запроса к мастер плейлисту (к сегментам можно так же добавлять а можно и не добавлять) ?
сейчас как временное решение помогает добавление такого параметра в конфиг файл -
Code:
client_acl_property_name=authkey
запрос к
/PCamCR0001H/PCamCR0001H.m3u8?authkey=JWToken
в плейлисте получаю
Code:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=1110017,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=1280x960,FRAME-RATE=26.0
av_PCamCR0001H_o/av_PCamCR0001H_o.m3u8?sessionId=7&authkey=JWToken
Второй вопрос -
формат плейлиста с сегментами -
сейчас я получаю такой плейлист -
Code:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=12.0,HOLD-BACK=6.0
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:2
#EXT-X-MEDIA-SEQUENCE:13574
#EXT-X-DISCONTINUITY-SEQUENCE:1
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:30.881Z
#EXTINF:1.0,
av_PCamCR0001H_o13574.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:31.881Z
#EXTINF:1.0,
av_PCamCR0001H_o13575.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:32.881Z
#EXTINF:1.0,
av_PCamCR0001H_o13576.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:33.881Z
#EXTINF:1.007,
av_PCamCR0001H_o13577.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:34.888Z
#EXTINF:1.0,
av_PCamCR0001H_o13578.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:35.888Z
#EXTINF:1.0,
av_PCamCR0001H_o13579.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:36.888Z
#EXTINF:1.0,
av_PCamCR0001H_o13580.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:37.888Z
#EXTINF:1.0,
av_PCamCR0001H_o13581.ts?sessionId=7
#EXT-X-PROGRAM-DATE-TIME:2148-07-04T05:35:38.888Z
#EXTINF:1.981,
av_PCamCR0001H_o13582.ts?sessionId=7
2) стрим идет с ключевыми кадрами каждую секунду, в конфиге прописано
Code:
hls_time_min=2000
hls_time=2
p.s. Полная секция конфига для HLS -
Code:
hls_discontinuity_enabled=false
hls_enable_session_debug=false
hls_hold_segments_before_delete=true
hls_hold_segments_size=120
hls_list_size=8
hls_time_min=2000
hls_time=2
hls_auto_start=true
hls_player_width=0
hls_player_height=0
hls_ll_enabled=false
ll_hls_fragmented_mp4=false
hls_new_http_stack=true
hls_abr_enabled=false
client_acl_property_name=authkey