via:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_Ingest python
採集(Ingest)指的是將文件(flv,mp4,mkv,avi,rmvb等等),流(RTMP,RTMPT,RTMPS,RTSP,HTTP,HLS等等),設備等的數據,轉封裝爲RTMP流(若編碼不是h264/aac則須要轉碼),推送到SRS。git
採集基本上就是使用FFMPEG做爲編碼器,或者轉封裝器,將外部流主動抓取到SRS。github
在vhost中添加:
shell
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是一個全局惟一標示符,不能重複。ui
轉碼引擎的配置參考:http://my.oschina.net/fengjihu/blog/414556,請注意,在ingest中只支持[port]和[vhost]2個變量,轉碼引擎中的其餘變量在ingest中不能使用。編碼
ingest一個流,進行多碼率輸出。url
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只是一個引擎的標識,沒有特殊意義,也不能經過變量來進行引用。spa