2019独角兽企业重金招聘Python工程师标准>>>
WIKI:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG
一、直播流转码配置及说明
listen 1935;
max_connections 1000;
#定义一个默认的vhost
vhost __defaultVhost__ {
}
#定义一个名为v.flyfn.com的vhost,这样只对v.flyfn.com这个vhost中所有流进行转码
vhost v.flyfn.com {
transcode {
enabled on; #开始实时转码
ffmpeg ./objs/ffmpeg/bin/ffmpeg; #ffmpeg的执行文件
engine sd { #这里通过engine定义转一个名为sd的转码引擎,这个名称在下面输出流的时候用到
enabled on; #开始,设置为off就是关闭
vfilter { #对应ffmpeg中的滤镜参数,可以在这里写
v quiet; #减少ffmpeg的输出日志
}
vcodec libx264; #视频编码器
vbitrate 500; #视频比特率
vfps 25; #视频帧率
vwidth 768; #宽
vheight 320; #高
vthreads 12; #使用ffmpeg线程数
vprofile main; #编码等级,high、main、baseline
vpreset medium; #视频预设
vparams { #ffmpeg的其他视频参数
g 100; # 指定gop时长为4秒=100 / 25(vfps)
}
acodec libfdk_aac; #音频编码器
abitrate 70; #音频比特率
asample_rate 44100; #音频采样率
achannels 2; #声道
aparams { #ffmpeg中的其他音频参数
}
#转码后的流输出到那里,这里是输出到本机了。另外一种推流到vhost的方法:
#rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]
#[vhost] 输入流的vhost
#[port] 输入流的端口
#[app] 输入流的app
#[stream] 输入流的流名称
#[engine] 转码引擎的名称
output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];
}
#可以定义多个engine
engine ld {
enabled on;
vfilter {
}
vcodec libx264;
vbitrate 300;
vfps 25;
vwidth 640;
vheight 480;
vthreads 12;
vprofile main;
vpreset medium;
vparams {
}
acodec libfdk_aac;
abitrate 70;
asample_rate 44100;
achannels 2;
aparams {
}
output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];
}
}
}
二、用ffmpeg推流
./ffmpeg -re -i 'abc.rmvb' -f flv -y rtmp://v.flyfn.com:1935/live?vhost=v.flyfn.com/test
原始视频播放:rtmp://v.flyfn.com/live/test
转码流1(sd):rtmp://v.flyfn.com/live/test_sd
转码流2(ld):rtmp://v.flyfn.com/live/test_ld
三、推流到srs的vhost时的另一种方法
rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]
四、如何对某一个app下的流都进行转码
listen 1935;
vhost v.flyfn.com {
transcode live{ #对形如rtmp://srs_ip:1935/live下的流进行转码
......
}
}
五、如何对某一路直播流进行转码
listen 1935;
vhost v.flyfn.com {
transcode live/livestream { #对形如rtmp://srs_ip:1935/live/livestream进行转码
......
}
}