准备
obs推流软件网址
直播播放器VLC srs player
mac自带ffmpeg
进阶 -ffmpeg推流 1)指定视频源 2)指定推流地址
ffmpeg -re -i test.glv\
-vcodec copy -acodec copy\
-f fly -y ramp://192.168.1.170/live/livestream;\
1.直播基础概念
1)视频
1.1 image Resolution Color Luminosity frameRate
1.2 metadata
1.3 contenerraper
1.4 audio
解码 点播 回放 源文件->Decoding->bofang
编码 直播->录像 直播流->Encoding ->视频录像
转码 特效加工处理文件格式转换 源文件 ->Decoding ->加工->Encoding->目标文件
2.服务端技术选型,搭建,集群
主播方—RTMP—>服务器端 —-RTMP(手机)/FLV(电脑PC)/HLS(网页)—>播放端
1)RTMP
a. 一个流媒体传输协议(Real Time Message Protocal),来自Adobe
b. 定义了视频,音频怎么实时传输
c. 每个时刻的数据,收到立刻转发
d. 建立在长链接TCP上
e. TCP上的一层协议
f. 延时1~3秒
2)HLS
a.HLS全称HTTP Live Streaming
b.短链接HTTP
c.10秒切割一段直播,60秒一个直播列表,客户端隔一段时间请求播放列表
d.延时>10秒
3)HTTP-FLV
a.HTTP-FLV全称RTMP over HTTP
b.以FLV的方式封装RTMP流,形式上稍微转换了一下
c.有RTMP的所有特征,譬如集群,低延迟,热备,GOPcache
d.而且有HTTP的优势,譬如302,穿墙,通用
e.延时1~3秒
HTTP-FLV的优势
a.低延迟,和RTMP一样
b.穿墙,很多防火墙会墙掉rtmp,但http不会
c.容错,SRS的HTTP FLV回源时可以回多个,支持多级热备
d.通用,Flash可以播TRTMP,也可以播HTTP FLV,App也支持
e.简单,FLV是最简单的流媒体封装,HTTP是最广泛的协议
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.启动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转码
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.核心函数setupGraph
c.初始化采集视频,输出到VideoMixer上
d.初始化采集音频,输出到AudioMixer上
e.将当前采集的视频输出渲染到VCPreviewView上
3)VideoMixer,Audio Mixer
4)BeautyVideoFilter等美颜Filter
5)VCPreviewView 视频预览
6)ffmpeg
ijkplayer 播放用,播直播用,底层用 ffmpeg play
4.手机网页播放