J’obtient une erreur HLS.js lorsque j’essaie de visionner un live. Le lecteur ne parvient pas à trouver la playlist m3u8. Par contre, une fois que le live est terminé, la rediffusion fonctionne bien. Avez-vous une idée?
J’ai la configuration standard.
error[2025-04-18, 2:38:11 p.m.] Client log: HLS.js error: networkError - fatal: true - manifestParsingError
{
"tags": [
"client"
],
"username": "obc",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0",
"meta": "{\"currentTime\":0,\"data\":{\"type\":\"networkError\",\"details\":\"manifestParsingError\",\"fatal\":true,\"url\":\"https://tv.atmx.ca/static/streaming-playlists/hls/ebcde59d-e55a-4754-8017-431087bef1a2/master.m3u8\",\"error\":{},\"reason\":\"no levels found in manifest\",\"response\":{\"url\":\"https://tv.atmx.ca/static/streaming-playlists/hls/ebcde59d-e55a-4754-8017-431087bef1a2/master.m3u8\",\"data\":\"#EXTM3U\\n#EXT-X-VERSION:6\\n\",\"code\":200},\"context\":{\"id\":null,\"level\":0,\"responseType\":\"text\",\"type\":\"manifest\",\"url\":\"https://tv.atmx.ca/static/streaming-playlists/hls/ebcde59d-e55a-4754-8017-431087bef1a2/master.m3u8\",\"deliveryDirectives\":null},\"networkDetails\":{\"__zone_symbol__xhrSync\":false,\"__zone_symbol__xhrURL\":\"https://tv.atmx.ca/static/streaming-playlists/hls/ebcde59d-e55a-4754-8017-431087bef1a2/master.m3u8\",\"__zone_symbol__ON_PROPERTYreadystatechange\":null,\"__zone_symbol__readystatechangefalse\":null,\"__zone_symbol__ON_PROPERTYprogress\":null,\"__zone_symbol__progressfalse\":null,\"__zone_symbol__xhrScheduled\":true,\"__zone_symbol__xhrErrorBeforeScheduled\":false,\"__zone_symbol__xhrTask\":{\"type\":\"macroTask\",\"state\":\"scheduled\",\"source\":\"XMLHttpRequest.send\",\"zone\":\"<root>\",\"runCount\":0}},\"stats\":{\"aborted\":false,\"loaded\":25,\"retry\":0,\"total\":25,\"chunkCount\":0,\"bwEstimate\":null,\"loading\":{\"start\":48654,\"first\":48722,\"end\":48722},\"parsing\":{\"start\":48722,\"end\":0},\"buffering\":{\"start\":0,\"first\":0,\"end\":0}}}}",
"url": "https://tv.atmx.ca/w/v7RmjhJvwXMqHYfdvnaJ4U"
}
Mon instance est derrière un proxy, j’ai donc commenté la section statique de la config nginx.
# Bypass PeerTube for performance reasons. Optional.
# Should be consistent with client-overrides assets list in client.ts server controller
# location ~ ^/client/(assets/images/(icons/icon-36x36\.png|icons/icon-48x48\.png|icons/icon-72x72\.png|icons/icon-96x96\.png|icons/icon-144x144\.png|icons/icon-192x192\.png|icons/icon-512x512\.png|logo\.svg|favicon\.png|default-playlist\.jpg|default-avatar-account\.png|default-avatar-account-48x48\.png|default-avatar-video-channel\.png|default-avatar-video-channel-48x48\.png))$ {
# add_header Cache-Control "public, max-age=31536000, immutable"; # Cache 1 year
# root /var/www/peertube;
# try_files /storage/client-overrides/$1 /peertube-latest/client/dist/$1 @api;
# }
# Bypass PeerTube for performance reasons. Optional.
# location ~ ^/client/(.*\.(js|css|png|svg|woff2|otf|ttf|woff|eot))$ {
# add_header Cache-Control "public, max-age=31536000, immutable"; # Cache 1 year
# alias /var/www/peertube/peertube-latest/client/dist/$1;
# }
# location ~ ^(/static/(webseed|web-videos|streaming-playlists/hls)/private/)|^/download {
# We can't rate limit a try_files directive, so we need to duplicate @api
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_limit_rate 5M;
# proxy_pass http://backend2;
# }
# Bypass PeerTube for performance reasons. Optional.
# location ~ ^/static/(webseed|web-videos|redundancy|streaming-playlists)/ {
# limit_rate_after 5M;
# set $peertube_limit_rate 5M;
# Use this line with nginx >= 1.17.0
# limit_rate $peertube_limit_rate;
# Or this line with nginx < 1.17.0
# set $limit_rate $peertube_limit_rate;
# if ($request_method = 'OPTIONS') {
# add_header Access-Control-Allow-Origin '*';
# add_header Access-Control-Allow-Methods 'GET, OPTIONS';
# add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
# add_header Access-Control-Max-Age 1728000; # Preflight request can be cached 20 days
# add_header Content-Type 'text/plain charset=UTF-8';
# add_header Content-Length 0;
# return 204;
# }
# if ($request_method = 'GET') {
# add_header Access-Control-Allow-Origin '*';
# add_header Access-Control-Allow-Methods 'GET, OPTIONS';
# add_header Access-Control-Allow-Headers 'Range,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
# Don't spam access log file with byte range requests
# access_log off;
# }
# Enabling the sendfile directive eliminates the step of copying the data into the buffer
# and enables direct copying data from one file descriptor to another.
# sendfile on;
# sendfile_max_chunk 1M; # prevent one fast connection from entirely occupying the worker process. should be > 800k.
# aio threads;
# web-videos is the name of the directory mapped to the `storage.web_videos` key in your PeerTube configuration
# rewrite ^/static/webseed/(.*)$ /web-videos/$1 break;
# rewrite ^/static/(.*)$ /$1 break;
#
# try_files $uri @api;
# }
}
Lien: Test live 8 - atmx
1 message - 1 participant(e)
Lire le sujet en entier