音视频流媒体开发-目录
iOS知识点-目录
Android-目录
Flutter-目录
数据结构与算法-目录
uni-pp-目录
服务器:SRS(Simple RTMP Server,⽀持RTMP、HTTP-FLV,HLS)
推流端:ffmpeg
拉流端:ffplay +VLC + srs播放器
0 HLS简介
作为 Apple 提出的⼀种基于 HTTP 的协议,HLS(HTTP Live Streaming)⽤于解决实时⾳视频流的传输。尤其是在移动端,由于 iOS /H5 不⽀持 flash,使得 HLS 成了移动端实时视频流传输的⾸选。HLS经常⽤在直播领域,⼀些国内的直播云通常⽤ HLS 拉流(将视频流从服务器拉到客户端)。 HLS 值得诟病之处就是其延迟严重,延迟通常在 10-30s 之间。
框架
(1) 对直播流进行分片,分片数量固定,每个分片的时长也基本固定
(2) 对于直播流而言,分片数量是固定的,过时的分片会被删除,只会保存最新的分片
(3) index file 存储目前的分片信息
(4) 存储ts文件
(5) 通过http协议读取服务器的文件
先读取index file,然后解析index file,然后读取相应的ts文件,把ts文件送给播放器播放
(6) index file是持续更新的,有新的ts文件生成就会更新
(7) 每次index file的ts文件读取完毕后,会再次去读取index file文件,获取新的index file,继续读取最新的ts文件
1 安装和测试srs流媒体服务器
1.1 安装srs流媒体服务器
srs官⽹:https://github.com/ossrs/srs
码云的源速度快:https://gitee.com/winlinvip/srs.oschina.git
github的源速度慢:https://github.com/ossrs/srs.git
选择当前最新的release版本3.0
第⼀步,获取SRS。详细参考GIT获取代码
git clone [https://gitee.com/winlinvip/srs.oschina.git](https://gitee.com/winlinvip/srs.oschina.git)
cd srs.oschina
cd trunk
第⼆步,编译SRS。详细参考Build
./configure && make
第三步,编写SRS配置⽂件。详细参考RTMP分发,Delivery HLS,Delivery HTTP FLV编辑 conf/srs.conf ,服务器启动时指定该配置⽂件(srs的conf⽂件夹有该⽂件)。
listen 1935;
max_connections 1000;
srs_log_tank file;
srs_log_file ./objs/srs.log;
http_api {
enabled on;
listen 1985;
}
http_server {
enabled on;
listen 8081; # http监听端⼝
dir ./objs/nginx/html;
}
stats {
network 0;
disk sda sdb xvda xvdb;
}
vhost __defaultVhost__ {
# hls darren
hls {
enabled on;
hls_path ./objs/nginx/html;
hls_fragment 5; # 分⽚时⻓ 秒
hls_window 25; # 最⼤缓存的时⻓ 秒
}
# http-flv darren
http_remux {
enabled on;
mount [vhost]/[app]/[stream].flv;
hstrs on;
}
}
第四步,启动SRS。
./objs/srs -c conf/srs.conf
1.2 测试srs流媒体服务器
第五步,启动推流编码器。详细参考RTMP分发
使⽤FFMPEG命令推流:
ffmpeg -re -i source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.11/live/livestream
注: 上述命令中的flv完整路径,以及srs server ip,⼤家根据情况⾃⾏替换为实际值。 另外:默认情况下srs的rtmp采⽤1935端⼝,如果该端⼝被占⽤或修改了srs.conf中的端⼝,注意根据情况调整;防⽕墙如果开了,也要检测下1935是否允许访问。
第六步,观看RTMP/HLS/HTTP-FLV流
RTMP流地址为: rtmp://192.168.1.11/live/livestream
HTTP FLV: http://192.168.1.11:8080/live/livestream.flv
HLS流地址为: http://192.168.1.11:8080/live/livestream.m3u8
可以使⽤ffplay或者vlc以及 http://ossrs.net/srs.release/trunk/research/players/srs_player.html进⾏测试。
2 协议
https://tools.ietf.org/html/draft-pantos-http-live-streaming-06
网友评论