编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

SRS流媒体服务器之HLS配置、测试和技术选型

wxchong 2024-07-29 08:14:47 开源技术 52 ℃ 0 评论

0.引言

阅读本文前,可以先阅读前面的文章,能够帮助你更好理解本篇文章。文章列表如下:

SRS流媒体服务器集群之Edge模式(3)

SRS流媒体服务器集群之Edge模式(2)

SRS流媒体服务器集群之Edge模式(1)

SRS流媒体服务器集群之Forward模式(2)

SRS流媒体服务器集群之Forward模式(1)

SRS流媒体服务器之HTTP-FLV框架分析(1)

SRS流媒体服务器之RTMP推流消息处理(1)

SRS流媒体服务器之RTMP协议分析(2)

SRS流媒体框架分析(1)

SRS流媒体之RTMP推流框架分析(2)

SRS流媒体之RTMP拉流框架分析(3)

SRS流媒体服务器之RTMP协议分析(1)

简述SRS流媒体服务器相关技术

流媒体推拉流实战之RTMP协议分析(BAT面试官推荐)

流媒体服务器架构与应用分析

手把手搭建流媒体服务器详细步骤

手把手搭建FFmpeg的Windows环境

超详细手把手搭建在ubuntu系统的FFmpeg环境

超详细手把手搭建在ubuntu系统的FFmpeg环境

关于HLS流媒体服务器的配置讲解,这篇文章手把手配置HLS流媒体服务器已经讲解得十分清楚,本篇文章主要是讲解说明一下,为后面的源码分析做准备。

1.HLS简述

HLS实际就是由HTTP协议(通信协议),TS文件,m3u8文件组成。即支持直播,也支持点播,HLS是苹果设计的标准流媒体协议,与RTMP在PC具有类似的效果,HLS和RTMP两种方式,基本就可以支持所有平台。


手机浏览器原生支持HLS(应用很广),并不支持RTMP、HTTP-FLV。如果每一片的时长为10s,那总共是60s,比如切片的顺序就是0-9、10-19、20-29、30-39、40-49,50-59等,依次按照顺序。如果超过60s,那0-9s的文件就要被删掉,删掉后就会变为这种类似的情况,那就是10-19、20-29、30-39、40-49,50-59、60-69。这样就可以把ts文件总时长限定在60s。这里讲的是直播场景。如果是点播场景,提前切好ts文件。对于点播来讲,设置hls_fragment有效,对于hls_window没有效。


2.HLS配置文件介绍及说明


在如下目录:

启动SRS流媒体服务器,输入如下命令:

./objs/srs -c conf/srs.conf


再开一个窗口,进入如下目录路径:


看看这个目录下的内容,输入如下命令:


先删除掉这个live目录。输入命令如下:

rm -rf live

这个live目录,是用来创建流。

启动推流命令:

ffmpeg -re -i source.200kbps.768x320.flv -vcodec copy -acodec copy -f flv -y rtmp://xxx.xxx.xxx.xxx/live/livestream

可以观察下,这个live,就又会重新生成。如下界面:

在这个live目录下看看,就会有很多ts文件和m3u8的文件。如下界面:

可以看看这个ts文件是逐渐递增的。



看看这个m3u8文件,输入命令:

cat livestream.m3u8

如下界面:

随着时间推移,一直在增加。


如果超过25s(我这里的设置时长是25s),超过25s,会把前面的ts文件删除,如下界面:


在如下目录:


输入如下命令:

vim conf/full.conf

可以给每个ts文件,配置时间戳。如下界面:



修改配置文件,输入命令:

vim conf/srs.conf


这样就能够,看到时间戳:



注意:切片都是从I帧开始,一个ts文件至少都是一个GOP。


3.HLS协议应用场景与技术选型

3.1 主要的应用场景:

(1)跨平台,如果要选择跨平台,同时支持PC、Android、IOS,那就是HLS。目前win操作系统的pc,主要是使用RTMP,当然也有一些库能够使用HLS,如jwplayer或一些支持hls的插件。

(2)IOS上稳定性好:IOS上最稳定的当然是HLS,稳定性不差于RTMP在PC-flash上的表现。

(3)无缝对接CDN:HLS的协议基础是http,这方面CDN的接入和分发会比RTMP更加完善,能够切换自如,当然RTMP也可以只是需要对接测试。

(4)HLS理解更容易的数据分发,前面讲过HLS是非常适合跨平台,SRS流媒体服务器主要是把HLS当做输出的分发协议,以RTMP+HLS分发,满足各种场景。

(5)不管是ios,还是android的原生博凡器,都比较好地支持了HLS,所以移动端还是可以考虑HLS。

HLS是点播和直播都可以,直播就主要看实时性。

3.2 技术选型:

(1)接入流媒体服务器系统使用RTMP协议。

(2)内部直播,数据分发使用RTMP。

(3)win系统的PC端的直播,实时性要求较高,可以使用RTMP。如果实时性要求不高,可以使用RTMP或HLS。

(4)win系统的PC端的点播,使用HTTP-FLV或HLS。

(5)在APPLE系统上,一般都只使用HLS,在实时性要求较高的情况下,就得去解析RTMP,如使用外部库,这里推荐一个网址。如下:https://www.vitamio.org

(6)Android终端,支持RTMP也是不错的选择。


3.2 分发方式比较:

HLS和RTMP协议的选型,完全取决于应用场景。当有些更严格的要求时,比如实时性更高,那么就需要自己开发了。

(1)UDP协议,实时性要求很高,如互动直播,视频会议等,这种场景,TCP和HTTP可能就不是很合适,这就没有通用的方案,需要开发基于UDP协议的流媒体协议。

(2)P2P:就适合做音视频通话,但是如何提高穿透率,这个是关键。

(3)RTSP:基本是属于安防领域的,互联网产品上,应用较少。

(4)HTTP progressive:早期流媒体服务分发http文件时,普通的http文件分发,这种叫渐进式下载,就是说必须从头开始播放或下载,如果要从中间播放,那是不可能。

(5)HTTP stream:支持seek的http流,把一个大文件切几段后分发,目前在pc/flash上点播场景应用得多。

(6)HDS:adobe公司设计的HLS,目前应用不多。

(7)DASH:各家提出的HLS,应用不是很多。

关于协议选型,更详细的文档,可以参考如下链接:

https://github.com/ossrs/srs/wiki/v3_CN_RTMP.PK.HTTP

界面如下:



4.总结

本文主要讲解了HLS组成,配置文件,直播和点播在不同系统的终端的技术选型,尤其是技术选型,这个很重要,在对接应用场景和需求时,就会显得非常重要。希望能够帮助到大家。欢迎关注,转发,点赞,收藏,分享,评论区讨论。

后期关于项目的知识,会在微信公众号上更新,如果想要学习项目,可以关注微信公众号“记录世界 from antonio”

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表