用SRS和FFMPEG进行直播流转码
WIKI:https://github.com/simple-rtmp-server/srs/wiki/v1_CN_FFMPEG
一、直播流轉(zhuǎn)碼配置及說明
listen ? ? ? ? ? ? ?1935;
max_connections ? ? 1000;
#定義一個默認(rèn)的vhost
vhost __defaultVhost__ {
}
#定義一個名為v.flyfn.com的vhost,這樣只對v.flyfn.com這個vhost中所有流進(jìn)行轉(zhuǎn)碼
vhost v.flyfn.com {
? ? transcode {
? ? ? ? enabled ? ? on; ? ? #開始實時轉(zhuǎn)碼
? ? ? ? ffmpeg ? ? ?./objs/ffmpeg/bin/ffmpeg; ? #ffmpeg的執(zhí)行文件
? ? ? ? engine sd { ? ? ?#這里通過engine定義轉(zhuǎn)一個名為sd的轉(zhuǎn)碼引擎,這個名稱在下面輸出流的時候用到
? ? ? ? ? ? enabled ? ? ? ? on; ? #開始,設(shè)置為off就是關(guān)閉
? ? ? ? ? ? vfilter { ? ? #對應(yīng)ffmpeg中的濾鏡參數(shù),可以在這里寫
? ? ? ? ? ??????v ? ? ? ? ? quiet; ? #減少ffmpeg的輸出日志
????????????}
? ? ? ? ? ? vcodec ? ? ? ? ?libx264; #視頻編碼器
? ? ? ? ? ? vbitrate ? ? ? ?500; ? #視頻比特率
? ? ? ? ? ? vfps ? ? ? ? ? ?25; ? #視頻幀率
? ? ? ? ? ? vwidth ? ? ? ? ?768; ? ?#寬
? ? ? ? ? ? vheight ? ? ? ? 320; ? ?#高
? ? ? ? ? ? vthreads ? ? ? ?12; ? #使用ffmpeg線程數(shù)
? ? ? ? ? ? vprofile ? ? ? ?main; ?#編碼等級,high、main、baseline
? ? ? ? ? ? vpreset ? ? ? ? medium; ?#視頻預(yù)設(shè)
? ? ? ? ? ? vparams { ? ? ? ?#ffmpeg的其他視頻參數(shù)
? ? ? ? ? ??????g????????????100; ?# 指定gop時長為4秒=100 / 25(vfps)
????????????}
? ? ? ? ? ? acodec ? ? ? ? ?libfdk_aac; ? #音頻編碼器
? ? ? ? ? ? abitrate ? ? ? ?70; ? ? #音頻比特率
? ? ? ? ? ? asample_rate ? ?44100; ? ? #音頻采樣率
? ? ? ? ? ? achannels ? ? ? 2; ? ?#聲道
? ? ? ? ? ? aparams { ? ?#ffmpeg中的其他音頻參數(shù)
? ? ? ? ? ? }
? ? ? ? ? ?#轉(zhuǎn)碼后的流輸出到那里,這里是輸出到本機(jī)了。另外一種推流到vhost的方法:
????????????#rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]
????????????#[vhost] 輸入流的vhost
????????????#[port] 輸入流的端口
????????????#[app] 輸入流的app
????????????#[stream] 輸入流的流名稱
????????????#[engine] 轉(zhuǎn)碼引擎的名稱
? ? ? ? ? ? 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
轉(zhuǎn)碼流1(sd):rtmp://v.flyfn.com/live/test_sd
轉(zhuǎn)碼流2(ld):rtmp://v.flyfn.com/live/test_ld
三、推流到srs的vhost時的另一種方法
rtmp://SRS_IP:[port]/[app]?vhost=[vhost]/[stream]
四、如何對某一個app下的流都進(jìn)行轉(zhuǎn)碼
listen 1935;
vhost v.flyfn.com {
????transcode live{ ? ? ? ? ?#對形如rtmp://srs_ip:1935/live下的流進(jìn)行轉(zhuǎn)碼
????????......
????}
}
五、如何對某一路直播流進(jìn)行轉(zhuǎn)碼
listen 1935;
vhost v.flyfn.com {
????transcode live/livestream { ? ? ? ? ?#對形如rtmp://srs_ip:1935/live/livestream進(jìn)行轉(zhuǎn)碼
????????......
????}
}
總結(jié)
以上是生活随笔為你收集整理的用SRS和FFMPEG进行直播流转码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg滤镜使用指南
- 下一篇: [Rtsp]RTSP对实时摄像头视频流进