Tôi có một thiết lập nginx đang hoạt động với mô-đun rtmp hoạt động như một cơ duyên tạo luồng trực tiếp bằng cả dấu gạch ngang và hsl. Không có vấn đề cho đến nay.
Khi tôi cố gắng bật chuyển mã ffmpeg để phát trực tuyến thích ứng, nó sẽ tạo ra phiên bản hls tốt, các đoạn video, một m3pu8 cho mỗi phiên bản video và một m3u8 chính là phiên bản tôi gọi từ trình phát web.
Nhưng trong phiên bản dấu gạch ngang, tôi nhận được các đoạn, tệp kê khai mpd cho từng phiên bản nhưng không có tệp kê khai chính.
Tui bỏ lỡ điều gì vậy? Mọi sự trợ giúp sẽ rất được trân trọng.
nginx.conf:
sự kiện {
công_nhân kết_nối 1024 ;
}
rtmp {
người phục vụ {
nghe 1935;
ứng dụng trực tiếp {
sống dựa vào;
exec ffmpeg -i rtmp://stream.server.net/live/$name -threads 1
-c:v libx264 -profile:v baseline -b:v 768K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 96k
rtmp://stream.server.net/liveout/$name_360
-c:v libx264 -profile:v baseline -b:v 1024K -s 852x480 -f flv -c:a aac -ac 1 -strict -2 -b:a 128k rtmp://stream.server.net/liveout/ $name_480;
}
phát trực tiếp ứng dụng {
sống dựa vào;
hl trên;
hls_path /home/stream/hls/;
hls_đoạn 4s;
hls_playlist_length 60s;
lao vào;
dash_path /home/stream/dash;
dấu gạch ngang 10 giây;
dash_playlist_length 30s;
dash_nested tắt;
hls_variant _360 BANDWIDTH=448000;
hls_variant _480 BANDWIDTH=1152000;
}
}
}
http {
người phục vụ {
server_name stream.server.net;
gốc /nhà/luồng/;
vị trí /hls {
# Phục vụ các đoạn HLS
các loại {
ứng dụng/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
gốc /nhà/luồng/;
add_header Kiểm soát bộ đệm không có bộ đệm;
# thiết lập CORS
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' '*' luôn luôn;
add_header 'Kiểm soát truy cập-Tiếp xúc với tiêu đề' 'Độ dài nội dung';
# Cho phép các yêu cầu chiếu trước CORS
nếu ($request_method = 'TÙY CHỌN') {
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' '*';
add_header 'Kiểm soát truy cập-Tuổi tối đa' 1728000;
add_header 'Loại nội dung' 'văn bản/bộ ký tự đơn giản=UTF-8';
add_header 'Độ dài nội dung' 0;
trả lại 204;
}
}
vị trí /dấu gạch ngang {
gốc /nhà/luồng/;
# Phục vụ các đoạn DASH
các loại {
ứng dụng/dấu gạch ngang+xml mpd;
video/mp4 mp4;
}
add_header Kiểm soát bộ đệm không có bộ đệm;
# thiết lập CORS
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' '*' luôn luôn;
add_header 'Kiểm soát truy cập-Tiếp xúc với tiêu đề' 'Độ dài nội dung';
# Cho phép các yêu cầu chiếu trước CORS
nếu ($request_method = 'TÙY CHỌN') {
add_header 'Kiểm soát truy cập-Cho phép-Xuất xứ' '*';
add_header 'Kiểm soát truy cập-Tuổi tối đa' 1728000;
add_header 'Loại nội dung' 'văn bản/bộ ký tự đơn giản=UTF-8';
add_header 'Độ dài nội dung' 0;
trả lại 204;
}
}
vị trí / chỉ số {
rtmp_stat tất cả;
# Sử dụng biểu định kiểu này để xem XML dưới dạng trang web
# trong trình duyệt
rtmp_stat_stylesheet stat.xsl;
}
vị trí /stat.xsl {
# Biểu định kiểu XML để xem số liệu thống kê RTMP.
# Sao chép stat.xsl bất cứ nơi nào bạn muốn
# và đặt đường dẫn thư mục đầy đủ ở đây
gốc /nhà/luồng/;
}
nghe 443 ssl; # được quản lý bởi Certbot
ssl_certificate /etc/letsencrypt/live/stream.server.net/fullchain.pem; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/live/stream.server.net/privkey.pem; # được quản lý bởi Certbot
bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
}
các loại {
văn bản/html html;
ứng dụng/dấu gạch ngang+xml mpd;
}
người phục vụ {
nếu ($host = stream.server.net) {
trả lại 301 https://$host$request_uri;
} # được quản lý bởi Certbot
nghe 80;
server_name stream.server.net;
trả lại 404; # được quản lý bởi Certbot
}}