via:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest
一、什么是ingest(采集)
采集(Ingest)指的是将文件(flv,mp4,mkv,avi,rmvb等等),流(RTMP,RTMPT,RTMPS,RTSP,HTTP,HLS等等),设备等的数据,转封装为RTMP流(若编码不是h264/aac则需要转码),推送到SRS。
采集基本上就是使用FFMPEG作为编码器,或者转封装器,将外部流主动抓取到SRS。
二、ingest的配置
在vhost中添加:
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
ingest ingest_id { #ingest_id为ingest的全局唯一编号,不可重复。
enabled on; #是否开启这个ingest。
input {
type file; #输入类型,有file(文件),stream(流),device(设备,这个还没有支持)
url ./doc/source.200kbps.768x320.flv; #输入源。
}
ffmpeg ./objs/ffmpeg/bin/ffmpeg; #指定ffmpeg的路径
engine { #转码引擎
enabled off; #是否开启转码引擎,默认为off,ffmpeg音视频都使用copy。
output rtmp://127.0.0.1:[port]/live?vhost=[vhost]/livestream; #输入地址,[port]和[vhost]是2个变量
}
}
}
ingest_id是一个全局唯一标示符,不能重复。
转码引擎的配置参考:http://my.oschina.net/fengjihu/blog/414556,请注意,在ingest中只支持[port]和[vhost]2个变量,转码引擎中的其他变量在ingest中不能使用。
三、实例
ingest一个流,进行多码率输出。
vhost __defaultVhost__ {
ingest livestream {
enabled on;
input {
type file;
url /usr/local/bms/objs/bbc-japan_1080p.mov;
}
ffmpeg /usr/local/bms/objs/ffmpeg;
engine sd {
enabled on;
vfilter {
v quiet;
}
vcodec libx264;
vbitrate 500;
vfps 25;
vwidth 720;
vheight 576;
vthreads 2;
vprofile main;
vpreset medium;
vparams {
g 10;
}
acodec libfdk_aac;
abitrate 70;
asample_rate 44100;
achannels 2;
aparams {
}
output rtmp://127.0.0.1:[port]/live/livestream_sd;
}
engine ld {
enabled on;
vfilter {
v quiet;
}
vcodec libx264;
vbitrate 500;
vfps 25;
vwidth 720;
vheight 576;
vthreads 2;
vprofile main;
vpreset medium;
vparams {
g 10;
}
acodec libfdk_aac;
abitrate 70;
asample_rate 44100;
achannels 2;
aparams {
}
output rtmp://127.0.0.1:[port]/live/livestream_ld;
}
}
}
engine sd {},这里sd只是一个引擎的标识,没有特殊意义,也不能通过变量来进行引用。
来源:oschina
链接:https://my.oschina.net/u/112731/blog/467439