Настройка Hls abr в cdn

ser

Member
Делал по этой инструкции - Настройки HLS Edge узлов

Серверы в облаке овх. Два во Франции (origin edge) транскодер в Австралии
Версия 5.2.1756

Code:
...
cdn_role=origin
cdn_strict_transcoding_boundaries=true
cdn_origin_allowed_to_transcode=true
Code:
...
cdn_role=edge
hls_abr_enabled=true
hls_abr_stream_name_suffix=-abr
Code:
...
cdn_role=transcoder
transcoder_align_encoders=true
video_filter_enable_fps=true
video_filter_fps=25
video_filter_fps_gop_synchronization=50

Пробовал переносить транскодер поближе не помогло
Пробовал делать без транскодера cdn_origin_allowed_to_transcode=true тоже не помогло

Работает только при раздаче hls abr с одного сервера. А мне нужно сделать чтоб было через сдн.

  1. Актуальная ли инструкция на сайте ?
  2. Можно ли сделать без вашего транскодера раздачу hls abr через флешФонер ?
 

Max

Administrator
Staff member
Нужно обновить до 5.2.1759 (были исправления по HLS).
Для HLS ABR в CDN на edge нужно добавить hls_abr_with_cdn=true.
cdn_strict_transcoding_boundaries=true и cdn_origin_allowed_to_transcode=true добавляются на edge, не на origin.
cdn_origin_allowed_to_transcode=true для HLS ABR не применяется, нужен транскодер.

Настройки для HLS ABR в CDN
- edge
Code:
hls_abr_enabled=true
hls_abr_with_cdn=true
hls_abr_stream_name_suffix=-abr
hls_player_width=0
hls_player_height=0
cdn_strict_transcoding_boundaries=true
- транскодер
Code:
transcoder_align_encoders=true
video_filter_enable_fps=true
video_filter_fps=30
video_filter_fps_gop_synchronization=60
На origin только настройки CDN: cdn_enabled, cdn_ip, cdn_nodes_resolve_ip, cdn_role.
 

ser

Member
Сделал обновление всех серверов. Лучше не стало. Hls abr срабатывает (иногда) один раз потом плеер не может загрузить чанки.

это первый раз (после рестарта edge) запускаю в videoJs плеере
может.png

Code:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,URI="a_audioGroup/a_audioGroup.m3u8",GROUP-ID="audioGroup",NAME="none",DEFAULT=YES,AUTOSELECT=YES
#EXT-X-STREAM-INF:BANDWIDTH=512001,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=640x360,AUDIO="audioGroup"
v_-360p/v_-360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=921601,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=852x480,AUDIO="audioGroup"
v_-480p/v_-480p.m3u8
на второй запрос такой размер у файлов

не может.png


Code:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,URI="a_audioGroup/a_audioGroup.m3u8",GROUP-ID="audioGroup",NAME="none",DEFAULT=YES,AUTOSELECT=YES
#EXT-X-STREAM-INF:BANDWIDTH=512001,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=640x360,AUDIO="audioGroup"
v_-360p/v_-360p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=921601,CODECS="avc1.640028,mp4a.40.2",RESOLUTION=852x480,AUDIO="audioGroup"
v_-480p/v_-480p.m3u8


Настойки сдн:
origin
edge.png

transcoder
trabs.png



делаю рестарт edge и после запуска в логе такие ошибки:

Code:
root@111:/usr/local/FlashphonerWebCallServer-5.2.1759/logs/server_logs# grep -rn error  flashphoner.log
998:javax.net.ssl.SSLHandshakeException: error:10000416:SSL routines:OPENSSL_internal:SSLV3_ALERT_CERTIFICATE_UNKNOWN
1335:javax.net.ssl.SSLHandshakeException: error:10000416:SSL routines:OPENSSL_internal:SSLV3_ALERT_CERTIFICATE_UNKNOWN
root@ns3207326:/usr/local/FlashphonerWebCallServer-5.2.1759/logs/server_logs# grep -rn ERROR  flashphoner.log
161:08:11:04,786 ERROR               Server - main Error while init WS! Failed to bind to: 0.0.0.0/0.0.0.0:8080
663:08:11:06,029 ERROR               Server - main Error while init  Flash Policy! Failed to bind to: 0.0.0.0/0.0.0.0:843
787:08:11:06,030 ERROR               Server - main Error while init RTSP! Failed to bind to: 0.0.0.0/0.0.0.0:554
992:08:11:06,131 ERROR               Server - main Error while init  TURN server! Failed to bind to: /ip:3478
2049:08:11:13,308 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2087:08:11:13,314 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2089:08:11:13,358 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2091:08:11:13,362 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2093:08:11:13,367 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2095:08:11:13,371 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2179:08:11:15,488 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2181:08:11:15,490 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2183:08:11:15,499 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2185:08:11:15,501 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2187:08:11:15,504 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps
2189:08:11:15,506 ERROR   MockWcsClient-MOCK - LL-HLS-test-abr Can't generate extradata, H264 can't generate extra data without sps/pps


1 Настойки сдн верны ?
2 почему размер чанка 1.3 кб ?
3 Failed to bind to: 0.0.0.0/0.0.0.0:8080 по идее сдн не должен вообще работать при такой ошибке или я не правильно понял назначение порта 8080 ?
 

Max

Administrator
Staff member
1 Настойки сдн верны ?
Чтобы проверить настройки CDN (и другие настройки), нам необходимы репорты с каждого сервера, собранные, как описано здесь (дампы трафика не нужны, только логи). Собирать их нужно скриптом: Сбор отладочных логов при помощи скрипта report.sh. архивы необходимо отправить, используя эту форму.
Другой вариант - предоставить нам SSH доступы к серверам, тогда наши инженеры проверят настройки.
2 почему размер чанка 1.3 кб ?
В файлах m3u8 лежат не чанки, а плейлисты. Вы можете это проверить на вкладке Preview в браузере. Для плейлиста это нормальный размер.
3 Failed to bind to: 0.0.0.0/0.0.0.0:8080 по идее сдн не должен вообще работать при такой ошибке или я не правильно понял назначение порта 8080 ?
Предварительно, с Failed to bind to: 0.0.0.0/0.0.0.0:8080 WebRTC вообще работать не должно. Проверьте, не заняты ли эти порты другим сервисом, это можно сделать при помощи netstat или другого инструмента.
 

Max

Administrator
Staff member

ser

Member
да, порт 8080 был занят. освободил его . но это не повлияло. дампы собрал и отправил через форму


Code:
# edge to transcoder
root@ns# iperf3 -c node5.domain.ru -p 5201 -u
Connecting to host node5.domain.ru, port 5201
[  5] local 2.2.2.2 port 53246 connected to 1.1.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  91 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/906 (0%)  sender
[  5]   0.00-10.24  sec  1.25 MBytes  1.03 Mbits/sec  0.106 ms  0/906 (0%)  receiver

iperf Done.
root@ns# iperf3 -c node5.domain.ru -p 5201 -u -R
Connecting to host node5.domain.ru, port 5201
Reverse mode, remote host node5.domain.ru is sending
[  5] local 2.2.2.2 port 37220 connected to 1.1.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  0.112 ms  0/91 (0%) 
[  5]   1.00-2.00   sec   129 KBytes  1.05 Mbits/sec  0.008 ms  0/91 (0%) 
[  5]   2.00-3.00   sec   127 KBytes  1.04 Mbits/sec  0.017 ms  0/90 (0%) 
[  5]   3.00-4.00   sec   129 KBytes  1.05 Mbits/sec  0.009 ms  0/91 (0%) 
[  5]   4.00-5.00   sec   127 KBytes  1.04 Mbits/sec  0.012 ms  0/90 (0%) 
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  0.005 ms  0/91 (0%) 
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  0.013 ms  0/90 (0%) 
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  0.009 ms  0/91 (0%) 
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  0.017 ms  0/90 (0%) 
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  0.013 ms  0/91 (0%) 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.24  sec  1.28 MBytes  1.05 Mbits/sec  0.000 ms  0/928 (0%)  sender
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.013 ms  0/906 (0%)  receiver



# orign to  transcoder


root@12503d52c87d:/# iperf3 -c node5.domain.ru -p 5201 -u
Connecting to host node5.domain.ru, port 5201

[  5] local 172.17.0.2 port 57571 connected to 1.1.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  91 
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  90 
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  91 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/906 (0%)  sender
[  5]   0.00-10.25  sec  1.25 MBytes  1.02 Mbits/sec  0.083 ms  0/906 (0%)  receiver

iperf Done.
root@12503d52c87d:/#
root@12503d52c87d:/# iperf3 -c node5.domain.ru -p 5201 -u -R
Connecting to host node5.domain.ru, port 5201
Reverse mode, remote host node5.domain.ru is sending

[  5] local 172.17.0.2 port 48032 connected to 1.1.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  5655035.537 ms  0/91 (0%) 
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  16976.610 ms  0/90 (0%) 
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  47.806 ms  0/91 (0%) 
[  5]   3.00-4.00   sec   129 KBytes  1.05 Mbits/sec  0.170 ms  0/91 (0%) 
[  5]   4.00-5.00   sec   127 KBytes  1.04 Mbits/sec  0.037 ms  0/90 (0%) 
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  0.054 ms  0/91 (0%) 
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  0.083 ms  0/90 (0%) 
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  0.036 ms  0/91 (0%) 
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  0.048 ms  0/90 (0%) 
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  0.041 ms  0/91 (0%) 
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.24  sec  1.28 MBytes  1.05 Mbits/sec  0.000 ms  0/927 (0%)  sender
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.041 ms  0/906 (0%)  receiver
 

Max

Administrator
Staff member
Проверили отчеты. К сожалению, вы не собрали настройки серверов, поэтому мы не можем их проверить. Повторите сбор отчетов, как мы просили ранее
Code:
cd /usr/local/FlashphonerWebCallServer/tools
sudo ./report.sh --sysinfo --conf --tar
Не удаляйте ничего из отчетов перед отправкой.
Результат проверки канала между серверами не выглядит корректным. Протестируйте канал по TCP на более длительном интервале
Code:
iperf3 -c <server_ip> -p 5201 -t 60
По логам, рекомендации будут следующими:
1. Обновите серверы до сборки 5.2.1759
2. Настройте origin следующим образом:
Code:
cdn_enabled = true
cdn_ip = <your_origin_ip>
cdn_role = origin
cdn_nodes_resolve_ip = false
cdn_transport=tcp
3. Настройте transcoder следующим образом
Code:
cdn_enabled = true
cdn_ip = <your_transcoder_ip>
cdn_point_of_entry = <your_origin_ip>
cdn_role = transcoder
cdn_nodes_resolve_ip = false
cdn_transport=tcp

transcoder_align_encoders=true
video_filter_enable_fps=true
video_filter_fps=30
video_filter_fps_gop_synchronization=60
4. Настройте edge следующим образом
Code:
cdn_enabled = true
cdn_ip = <your_edge_ip>
cdn_point_of_entry = <your_origin_ip>
cdn_role = edge
cdn_nodes_resolve_ip = false
cdn_transport=tcp

hls_abr_enabled=true
hls_abr_with_cdn=true
hls_preloader_enabled=false
hls_player_width=0
hls_player_height=0
cdn_strict_transcoding_boundaries=true
Уточните: вы планируете использовать Low Latency HLS или обычный? Если необходим LL HLS, нужно на edge также указать настройку
Code:
hls_ll_enabled=true
5. Настройте cdn_profiles.yml на edge следующим образом:
Code:
profiles:
  -360p:
    audio:
      codec : mpeg4-generic
      rate : 44100
      channels : 2
      groupId : audio
    video:
      width : 0
      height : 360
      bitrate : 500
      codec : h264
      gop : 60
      fps : 30
      audioGroupId : audio

  -480p:
    audio:
      codec : mpeg4-generic
      rate : 44100
      channels : 2
      groupId : audio
    video:
      width : 0
      height : 480
      bitrate : 900
      codec : h264
      gop : 60
      fps : 30
      audioGroupId : audio
Тестовая CDN с такими настройками на наших серверах работает. В связи с географическими особенностями вашей CDN, рекомендуется либо включить внутри CDN TCP транспорт (как указано выше), либо перенести транскодер максимально близко к origin и edge (в европейский ДЦ).
Если с такими настройками проблемы сохранятся, дайте доступы к серверам при помощи этой формы. Наши инженеры проверят работу CDN.
 

ser

Member
спасибо за развернутый ответ.

попробовал изменить транспорт на tcp - не помогло. отправлю полные логи.
менял транскодер поближе тоже не помогло. на это логи не собирал
у нас есть на origin логика рестрима при принятии стрима. - пробовал её отключить тоже не повлияло



хотел уточнить что на edge при раздаче hls нельзя по другим протоколам работать. но они по факту работают хорошо. без разницы где транскодер главное чтобы был не в пассиве.
2023-09-26_10-38.png

2023-09-26_10-47.png



если я сменил транскодер ( из Австралии в Польшу ) то получаю иногда ошибки
2023-09-26_10-31.png

остались вопросы:
1 почему на edge можно воспроизводить через webrtc когда включена раздача hls ?
2 test-abr тоже воспроизводится через webrtc. хотя этот префикс только для hls должен работать. так и должно быть или я чет не так настроил ?





Уточните: вы планируете использовать Low Latency HLS или обычный? Если необходим LL HLS, нужно на edge также указать настройку
нет. использовать хотели только обычный HLS с ABR через ваш CDN
 

Max

Administrator
Staff member
1 почему на edge можно воспроизводить через webrtc когда включена раздача hls ?
Это не запрещено, но не рекомендуется, т.к. может приводить к излишнему транскодингу звука, поскольку в HLS и WebRTC используются разные кодеки.
2 test-abr тоже воспроизводится через webrtc. хотя этот префикс только для hls должен работать. так и должно быть или я чет не так настроил ?
Так быть не должно, и у нас это не воспроизводится. Скорее всего, проблема в настройках. Проверим ваши репорты и уточним. Возможно, по результатам проверки потребуется организовать доступ к серверам для наших инженеров.
 

Max

Administrator
Staff member
Проверили настройки, явных проблем не увидели. На тестовых серверах с такими настройками HLS с edge проключается и играет плавно, по WebRTC поток с суффиксом -abr не играет.
При этом в ваших клиентских логах HLS на edge видны проблемы с нарезкой сегментов:
Code:
06:41:05,873 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:05.872 WARNING: Segment 5 does not start with keyframe, media type: video
06:41:05,891 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:05.891 WARNING: Segment 6 does not start with keyframe, media type: video
06:41:30,416 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:30.416 WARNING: Segment 17 does not start with keyframe, media type: video
06:41:30,432 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:30.432 WARNING: Segment 18 does not start with keyframe, media type: video
06:41:39,844 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:39.843 INFO: Short segment: ParentSegment{id=22, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710498231, endPts=1695710499231}, media type: video
06:41:39,844 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:39.843 INFO: Short segment: ParentSegment{id=23, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710498231, endPts=1695710499231}, media type: video
06:41:40,594 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:40.594 INFO: Short segment: ParentSegment{id=23, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710499231, endPts=1695710500231}, media type: video
06:41:40,599 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:40.598 INFO: Short segment: ParentSegment{id=24, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710499231, endPts=1695710500231}, media type: video
06:41:48,603 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:48.603 WARNING: Segment 28 does not start with keyframe, media type: video
06:41:48,608 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:48.608 WARNING: Segment 27 does not start with keyframe, media type: video
06:41:53,148 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:41:53.148 WARNING: Playback speed changed to 1.045, segment 28, media type: audio
06:42:13,784 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:13.784 WARNING: Segment 40 does not start with keyframe, media type: video
06:42:13,812 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:13.811 WARNING: Segment 41 does not start with keyframe, media type: video
06:42:22,818 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:22.818 WARNING: Segment 46 does not start with keyframe, media type: video
06:42:22,820 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:22.820 WARNING: Segment 45 does not start with keyframe, media type: video
06:42:28,589 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:28.589 WARNING: Segment 48 does not start with keyframe, media type: video
06:42:28,590 WARN      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:28.589 WARNING: Segment 49 does not start with keyframe, media type: video
06:42:51,947 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:51.947 INFO: Short segment: ParentSegment{id=61, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710570223, endPts=1695710571223}, media type: video
06:42:51,949 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:51.949 INFO: Short segment: ParentSegment{id=62, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710570223, endPts=1695710571223}, media type: video
06:42:52,783 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:52.783 INFO: Short segment: ParentSegment{id=62, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710571223, endPts=1695710572223}, media type: video
06:42:52,784 INFO      HlsStreamMetrics - LL-HLS-test-abr 2023-09-26T06:42:52.784 INFO: Short segment: ParentSegment{id=63, duration=1000, startedWithKeyFrame=true, hasKeyFrame=false, gap=false, parts=0, hasVideo=true, hasAudio=false, startPts=1695710571223, endPts=1695710572223}, media type: video
Обычно такие проблемы сигнализируют о проблемах с исходной публикацией, либо о проблемах с каналом между серверами. Из логов мы видим только разрешение исходной публикации (1920x1080), keyframe interval (1 s) и тип публикации (RTMP). Уточните, как именно вы публикуете поток?
В наших тестах ваших настроек мы публиковали RTMP поток из OBS со следующими параметрами:
1695783256066.png

1695783275854.png

Также уточните, как вы играете HLS? Обратите внимание, что VideoJS 8 плохо работает с сегментами в контейнере m4s, поэтому наш пример базируется на VideoJS 7.
Для того, чтобы точно диагностировать проблему, нам потребуется SSH доступ к серверам CDN с возможностью публикации и проигрывания.
Есть и другой вариант: вы можете запросить настройку CDN на ваших серверах: Запрос настройки сервера. В этом случае также потребуется доступ к серверам.
 

ser

Member
Плееры которые использовал для воспроизведения :
1 https://www.theoplayer.com/test-your-stream-hls-dash-hesp
2 videoJs 7.17.0 c плагином videojs-hls-quality-selector
3 ваш плеер из демо
4 http://players.akamai.com/players/hlsjs


стрим веду через обс. настроойки обс:
2023-09-27_09-21_1.png

2023-09-27_09-21.png

пробовал с вашими настройками - так же
пробовал через через демо пример на origin по вебртц начать - абр не работает. через ваш плеер идет нормально в 480р 360р с edge


чтобы попасть в ситуацию когда в вашем плеере воспроизводится -abr надо сразу после публикации потока начать его воспроизводить. вот я начал стрим через вебртц и сразу нажал на плей после этого.

2023-09-27_10-13.png

но если сначала делаю плей в videoJs а потом в вашем плеере то будет ошибка: "
FAILED
Failed to add stream to proxy
"
 

Max

Administrator
Staff member
3 ваш плеер из демо
Какой именно плеер использовали: HLS.JS Player Minimal (исходный код), VideoJS Player Minimal (исходный код)?
Еще раз подняли тестовую CDN с вашими настройками, опубликовали RTMP поток: играет без явных проблем в упомянутых наших примерах, в https://www.theoplayer.com/test-your-stream-hls-dash-hesp и в https://hlsjs.video-dev.org/demo/
1695803204153.png

1695803266915.png

1695803329963.png


пробовал через через демо пример на origin по вебртц начать - абр не работает. через ваш плеер идет нормально в 480р 360р с edge
Какие именно примеры использовали в данном тесте?
чтобы попасть в ситуацию когда в вашем плеере воспроизводится -abr надо сразу после публикации потока начать его воспроизводить. вот я начал стрим через вебртц и сразу нажал на плей после этого.
Эту проблему подтверждаем, завели тикет WCS-3932, о результатах сообщим здесь. Пока не рекомендуем начинать играть ABR поток по WebRTC.

По проблемам проигрывания. Уточните: HLS ABR не проключается в плеерах совсем или фризит? Как именно проявляется проблема?
Отметим повторно, что сообщения в клиентских логах HLS могут указывать на проблемы с каналом между серверами. Рекомендуем располагать серверы ближе друг к другу. По WebRTC тот же самый поток по профилю может играть корректно за счет того, что jitter буфер браузера фильтрует и отбрасывает проблемные фреймы, а HLS будет пытаться играть их все.
Если рекомендации не помогают, просим предоставить доступы к вашим серверам, чтобы наши инженеры могли воспроизвести проблему.
 

ser

Member
Какой именно плеер использовали: HLS.JS Player Minimal (исходный код), VideoJS Player Minimal (исходный код)?
пробовал оба


создал еще одну сеть для проверки. по итогу такая же ситуация там.
данные для входа на новые серверы отправил
они подняты в амсетрдаме через digitalocean
 

ser

Member
Code:
ll_hls_fragmented_mp4=false
после добавления на edge абр заработал
 

Max

Administrator
Staff member
Проверили серверы, сузили кейс до публикации и проигрывания HLS в контейнере m4s на одном сервере без ABR. Проблема связана именно с нарезкой в данный контейнер. Создали тикет WCS-3933, сообщим о результатах в этой теме.
В качестве обхода рекомендуем использовать контейнер ts:
Code:
ll_hls_fragmented_mp4=false
 

Max

Administrator
Staff member
Добрый день.
Проблема с нарезкой HLS в m4s контейнер исправлена в сборке 5.2.1770.
 

ser

Member
Здравствуйте

Ок, сегодня обновим и отпишем сюда.

Еще была проблема:
После долгого просмотра hls перестал работать. логи собрал и отправил.
Где-то через сутки плеер получает чанки но воспроизводит черный экран.
Плееры зависили с 2-3 ночи по МСК

После перезапуска транскодера hls abr заработал . но стрим без транскодинга показывал так же черный экран
 
Last edited:

ser

Member
При долгом просмотре в логах много таких сообщений. LL hls по умолчанию выключен. Откуда эти сообщения?

Пробовал специально выключить но не влияло:
Code:
hls_ll_enabled=false
2023-10-04_10-19.png
 

Max

Administrator
Staff member
После долгого просмотра hls перестал работать. логи собрал и отправил.
Завели тикет WCS-3935, о прогрессе сообщим здесь
 

Max

Administrator
Staff member
При долгом просмотре в логах много таких сообщений. LL hls по умолчанию выключен. Откуда эти сообщения?
Для нарезки HLS (LL и не LL) используется один и тот же Java класс.
Сами по себе эти сообщения говорят о том, что есть какая-то проблема с метками времени в исходном потоке, либо в транскодированном. Если играть тот же поток с origin по WebRTC, нет ли проблем с проигрыванием спустя сутки?
 
Top