準(zhǔn)備
obs推流軟件網(wǎng)址?
直播播放器VLC? srs player
mac自帶ffmpeg
進(jìn)階 -ffmpeg推流 1)指定視頻源? 2)指定推流地址
ffmpeg -re -i test.glv\
-vcodec copy -acodec copy\
-f fly -y ramp://192.168.1.170/live/livestream;\
1.直播基礎(chǔ)概念
1)視頻
1.1 image? Resolution Color Luminosity frameRate
1.2 metadata
1.3 contenerraper
1.4 audio
解碼 點(diǎn)播 回放? ? 源文件->Decoding->bofang
編碼 直播->錄像? 直播流->Encoding ->視頻錄像
轉(zhuǎn)碼? 特效加工處理文件格式轉(zhuǎn)換? 源文件 ->Decoding ->加工->Encoding->目標(biāo)文件
2.服務(wù)端技術(shù)選型,搭建拨齐,集群
主播方—RTMP—>服務(wù)器端 —-RTMP(手機(jī))/FLV(電腦PC)/HLS(網(wǎng)頁(yè))—>播放端
1)RTMP
a. 一個(gè)流媒體傳輸協(xié)議(Real Time Message Protocal)焰雕,來(lái)自Adobe
b. 定義了視頻陌凳,音頻怎么實(shí)時(shí)傳輸
c. 每個(gè)時(shí)刻的數(shù)據(jù),收到立刻轉(zhuǎn)發(fā)
d. 建立在長(zhǎng)鏈接TCP上
e. TCP上的一層協(xié)議
f. 延時(shí)1~3秒
2)HLS
a.HLS全稱HTTP Live Streaming
b.短鏈接HTTP
c.10秒切割一段直播撵幽,60秒一個(gè)直播列表遗菠,客戶端隔一段時(shí)間請(qǐng)求播放列表
d.延時(shí)>10秒
3)HTTP-FLV
a.HTTP-FLV全稱RTMP over HTTP
b.以FLV的方式封裝RTMP流,形式上稍微轉(zhuǎn)換了一下
c.有RTMP的所有特征血柳,譬如集群,低延遲生兆,熱備混驰,GOPcache
d.而且有HTTP的優(yōu)勢(shì),譬如302皂贩,穿墻,通用
e.延時(shí)1~3秒
HTTP-FLV的優(yōu)勢(shì)
a.低延遲昆汹,和RTMP一樣
b.穿墻明刷,很多防火墻會(huì)墻掉rtmp,但http不會(huì)
c.容錯(cuò),SRS的HTTP FLV回源時(shí)可以回多個(gè)满粗,支持多級(jí)熱備
d.通用辈末,F(xiàn)lash可以播TRTMP,也可以播HTTP FLV映皆,App也支持
e.簡(jiǎn)單挤聘,F(xiàn)LV是最簡(jiǎn)單的流媒體封裝,HTTP是最廣泛的協(xié)議
nginx-rtmp-module
srs
a.https://github.com/ossrs/srs
b. ramp
c.hls
d.rtmp,hls集群
e.srs編譯: ./configure —disable-all —with-ssl&& make
d.conf配置
# conf/rtmp.conf
listen? ? ? 1935;
max_connections? 1000;
ghost __defaultVhost__{}
e.啟動(dòng)srs: ./objs/srs -c conf/rtmp.conf
f.ffmpeg推流
for((;;));do\
./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768??320.flv\
-vcodec copy -acodec copy\
-f fly -y ramp://192.168.1.170/live/livestream;\
sleep 1;\
done
g.rtmp play ramp://192.168.1,170:1935/live/livestream
h.srs轉(zhuǎn)碼
ghostxx.quzhibo.com{
????????? transcode{
??????????????????? enabled? on;
??????????????????? ffmpeg? ./objs/ffmpeg/bin/ffmpeg;
??????????? engine ff{
???????????????????????? enabled? ? on;
???????????????????????? codec? ? libx264;
????????????????????????? vbitrate? 500;
????????????????????????? vfps? ? ? 20;
????????????????????????? vwidth? ? 400;
????????????????????????? threads? ? 12;
????????????????????????? profile? ? main;
????????????????????????? vpreeset? ? medium;
????????????????????????? acidic? ? copy;
???????????????????????? #acodec? ? libaacplus;
????????????????????????? #abitrate? ? 70;
????????????????????????? #asample_rate? ? 44100;
????????????????????????? #achannels? ? ? 2;
??????????????????????????? output? ? ? ramp://127.0.0.1:[port]/[app]?vhost=__defaultVhost__/[s]
???????????????????? }
}
}
3.客戶端iOS推流捅彻,播放
videoCore 推流用组去,底層用 ffmpeg
iOS? videoCore模塊解析
1)Rtmp Session等Rtmp管理類
2)VCSimpleSession 采集管理類
?????????? a.核心采集管理類
?????????? b.核心函數(shù)setupGraph
?????????? c.初始化采集視頻,輸出到VideoMixer上
?????????? d.初始化采集音頻步淹,輸出到AudioMixer上
??????????? e.將當(dāng)前采集的視頻輸出渲染到VCPreviewView上
3)VideoMixer从隆,Audio Mixer
4)BeautyVideoFilter等美顏Filter
5)VCPreviewView 視頻預(yù)覽
6)ffmpeg
?????????? ijkplayer 播放用,播直播用缭裆,底層用 ffmpeg play
4.手機(jī)網(wǎng)頁(yè)播放