手工开发RTMP-HLS简易服务器_1_知识梳理

任务要求:

    输入:对接OBS推流

    输出:能够在手机端浏览器观看OBS推流的视频/音频

源码:

gitee:https://gitee.com/walty/WQ_RTMP

由于个人在C、C++方面能力有限,所以用Java写的项目,很多地方不成熟,还望包含。

知识补充:

1、HLS协议

    HLS协议在Android端浏览(chrome)器与IOS端浏览器(safari)支持很好,只需要单纯的HTML的<video src="xxxx.m3u8"> 即可直接对接到该协议。

    HLS协议主要分为两类文件,

    1)一类为视频文件(.ts)文件,该文件主要保存了视频与音频,ts文件有多个,每个ts文件保存极短的视频。

    2)第二类为 清单文件(.m3u8),该文件内保存有视频文件的清单,m3u8文件只有一个,主要功能是指明当前视频是那个ts文件,下一个视频是哪个ts文件。

2、RTMP协议

    RTMP协议是OBS软件推送数据(音频数据、视频数据、控制数据等)协议。

    RTMP协议还包含有以下协议,用于压缩数据。

1)AMF0协议

    amf0协议主要用于压缩控制数据,如:开始推流、停止推流、视频音频规格等等。[注]当前较为流行的是amf3协议,由于我做是去年做的、且RTMP协议也属于较老的协议,所以可能目前还没跟上时代的潮流。

扫描二维码关注公众号,回复: 1743885 查看本文章
2)FLV协议

    flv协议主要用于压缩视频音频数据。

3)H264、AAC
    H264为视频格式,AAC为音频格式。虽然有MP4、wav等格式,但是在直播技术中较为主流的还是h264、aac。[注]最近已经有推出h265协议,压缩能力更强。

代码主要思想

总:RTMP协议解析OBS推流的数据-->>提取、保存H264/AAC数据-->>构建TS文件和更新m3u8文件-->>HTML端通过Video标签访问m3u8清单文件,实现直播效果。

猜你喜欢

转载自blog.csdn.net/qq_27307641/article/details/80781471