参考网址:https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video
配置信息
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
allow play all;
notify_method get;
#creates our "live" full-resolution HLS videostream from our incoming encoder stream and tells where to put the HLS video manifest and video fragments
application live {
allow play all;
live on;
on_publish http://example.com/openapi/on_publish_done; # 设置开始推流的回调
record all;
record_path /home/tinywan/video_recordings;
record_unique on;
on_record_done http://example.com/recorded; # 设置录像结束的回调
hls on;
hls_nested on;
hls_path /HLS/live;
hls_fragment 10s;
on_publish_done http://example.com/on_publish_done; # 设置开始推流的回调
#creates the downsampled or "trans-rated" mobile video stream as a 400kbps, 480x360 sized video
exec ffmpeg -i rtmp://192.168.254.178:1935/$app/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k maxrate 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://192.168.254.178:1935/mobile/$;
}
#creates our "mobile" lower-resolution HLS videostream from the ffmpeg-created stream and tells where to put the HLS video manifest and video fragments
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /home/tinywan/HLS/mobile;
hls_fragment 10s;
}
#allows you to play your recordings of your live streams using a URL like "rtmp://my-ip:1935/vod/filename.flv"
application vod {
play /home/tinywan/video_recordings;
}
}
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name 192.168.254.178;
#creates the http-location for our full-resolution (desktop) HLS stream - "http://my-ip/live/my-stream-key/index.m3u8"
location /live {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /home/tinywan/HLS/live;
add_header Cache-Control no-cache;
}
#creates the http-location for our mobile-device HLS stream - "http://my-ip/mobile/my-stream-key/index.m3u8"
location /mobile {
types {
application/vnd.apple.mpegurl m3u8;
}
alias /home/tinywan/HLS/mobile;
add_header Cache-Control no-cache;
}
#allows us to see how stats on viewers on our Nginx site using a URL like: "http://my-ip/stats"
location /stats {
stub_status;
}
#allows us to host some webpages which can show our videos: "http://my-ip/my-page.html"
location / {
root html;
index index.html index.htm;
}
}
}
http://192.168.18.151/live/123456/index.m3u8
rtmp://192.168.18.151/live/123456
rtmp://192.168.18.151/vod/123456-1490768694.flv
http://192.168.18.151/stats
Active connections: 1
server accepts handled requests
274 274 108
Reading: 0 Writing: 1 Waiting: 0
on_publish
$action = $_GET['call']; -- publish
$appName = $_GET['app']; -- live
$swfurl = $_GET['swfurl']; -- http://123213.com/lib/jwplayer/jwplayer.flash.swf
$tcurl = $_GET['tcurl']; -- rtmp://11.26.11.11/live/
$ip = $_GET['addr']; -- 客户端IP地址
$clientid = $_GET['clientid']; -- 871696
$streamName = $_GET['name']; -- stream123
on_publish_done
$action = $_GET['call']; -- on_publish_done
$appName = $_GET['app'];
$swfurl = $_GET['swfurl'];
$tcurl = $_GET['tcurl'];
$ip = $_GET['addr'];
$clientid = $_GET['clientid'];
$streamName = $_GET['name'];
on_record_done (on_record_done http://my-ip/api/recordDone;)
'app' => string 'live' (length=4)
'flashver' => string 'FMLE/3.0 (compatible; Lavf56.3.' (length=31)
'swfurl' => string '' (length=0)
'tcurl' => string 'rtmp://10.117.19.148:1935/live' (length=30)
'pageurl' => string '' (length=0)
'addr' => string '192.168.18.151/' (length=13)
'clientid' => string '1' (length=1)
'call' => string 'record_done' (length=11) -- 录像事件状态
'recorder' => string 'rec1' (length=4) -- 录像模块名称
'name' => string '123456' (length=13) -- 推流名称
'path' => string '/home/tinywan/video_recordings/123456-1482801335.flv' -- 录像路径
rtmp {
server {
listen 1935;
ping 30s;
notify_method get;
application live {
live on;
on_record_done http://my-ip/api/recordDone; -- 以上配置在这里个回调里面的地址
recorder rec1 {
record all manual;
record_unique on;
record_notify on;
record_path /data/recorded_flvs;
exec_record_done /home/www/bin/rtmpRecordedNotify.sh $name $path $filename $basename $dirname;
}
}
}
on_connect
'app' => string 'live' (length=4)
'flashver' => string '' (length=0)
'swfurl' => string '' (length=0)
'tcurl' => string 'rtmp://192.168.18.151/live' (length=25)
'pageurl' => string '' (length=0)
'addr' => string '10.117.64.209' (length=13)
'epoch' => string '582057759' (length=9)
'call' => string 'connect' (length=7)
实际案例 (Web页面和Mobile手机流转换)
rtmp {
server {
listen 1935;
application live {
live on;
exec ffmpeg -i rtmp://localhost/live/$name -acodec copy -c:v libx264 -preset veryfast -profile:v baseline -vsync cfr -s 480x360 -b:v 400k -bufsize 400k -threads 0 -r 30 -f flv rtmp://localhost/mobile/$name;
}
application mobile {
allow play all;
live on;
hls on;
hls_nested on;
hls_path /home/tinywan/HLS/mobile;
hls_fragment 10s;
}
}
}
实际案例 2
实际案例 3
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )