SRS 代码分析
文章平均质量分 86
Suk_39799839
这个作者很懒,什么都没留下…
展开
-
SRS 代码分析【HLS切片】
转载:http://blog.csdn.net/ManagerUser/article/details/76087151一、前言 SRS流媒体服务器支持rtmp协议,但是rtmp协议仅仅支持PC直播。移动端直播需要HLS协议,HLS协议是苹果公司开发出来的,用于移动端视频直播,Android也对HLS做了友好支持。所以,SRS流媒体服务器支持rtmp协议和hls协转载 2017-12-04 11:01:38 · 3147 阅读 · 0 评论 -
SRS 代码分析
SRS 代码分析1.SRS 代码分析【服务器启动】2.SRS 代码分析【RTMP连接请求响应】3.SRS 代码分析【FLV文件解析】4.SRS 代码分析【HTTP-FLV传输实现】5.SRS 代码分析【HLS切片】原创 2017-12-04 20:27:58 · 3884 阅读 · 0 评论 -
SRS 代码分析【保存MP3音频文件】
1. SRS 对MP3音频文件的保存首先调用SrsMp3Transmuxer::write_header()写入头部信息,函数定义如下:int SrsMp3Transmuxer::write_header(){ char id3[] = { (char)0x49, (char)0x44, (char)0x33, // ID3 (char)0x03, (原创 2017-12-13 14:13:09 · 1993 阅读 · 0 评论 -
SRS 代码分析【保存AAC音频文件】
SRS 对AAC音频文件的保存主要是调用SrsAacTransmuxer::write_audio(),函数定义如下:int SrsAacTransmuxer::write_audio(int64_t timestamp, char* data, int size){ int ret = ERROR_SUCCESS; srs_assert(data);原创 2017-12-13 13:12:51 · 1482 阅读 · 0 评论 -
SRS 代码分析【RTMP Chunck数据读取】
1.RTMP Chunck流读取主要是调用SrsProtocol::recv_interlaced_message,该函数的定义如下:int SrsProtocol::recv_interlaced_message(SrsCommonMessage** pmsg){ int ret = ERROR_SUCCESS; // chunk stream basic hea原创 2017-12-11 14:38:30 · 2219 阅读 · 0 评论 -
SRS 代码分析【RTMP Chunck数据发送】
1.RTMP 发送数据时会调用SrsProtocol::do_send_and_free_packet,该函数定义如下:int SrsProtocol::do_send_and_free_packet(SrsPacket* packet, int stream_id){ int ret = ERROR_SUCCESS; srs_assert(packet);原创 2017-12-11 16:12:31 · 1180 阅读 · 0 评论 -
SRS 代码分析【服务器启动】
服务器启动流程:main函数中直接调用do_main函数do_main函数执行过程如下:1).解析输入参数 _srs_config->parse_options()2).初始化log srs_log->initialize()3).启动服务器 run(SrsServer*)run函数执行流程如下:1).初始化SrsServer类 svr->initiali原创 2017-11-20 09:33:19 · 2556 阅读 · 0 评论 -
SRS 代码分析【RTMP握手实现】
RTMP简单握手实现1.客户端握手的代码如下:int SrsSimpleHandshake::handshake_with_server(SrsHandshakeBytes* hs_bytes, ISrsProtocolReaderWriter* io){ int ret = ERROR_SUCCESS; ssize_t nsize; //原创 2017-12-11 10:28:00 · 2237 阅读 · 0 评论 -
SRS 代码分析【RTMP信息play/publish】
转载:SRS(simple-rtmp-server)流媒体服务器源码分析--RTMP信息Publishhttp://blog.csdn.net/ManagerUser/article/details/73614518SRS(simple-rtmp-server)流媒体服务器源码分析--RTMP消息playhttp://blog.csdn.转载 2017-12-10 21:25:36 · 1504 阅读 · 0 评论 -
SRS 代码分析【DVR录像实现】
DVR配置详解:https://github.com/ossrs/srs/wiki/v3_CN_DVR1.SrsOriginHub::initialize初始化时会调用SrsDvr::initializesrs_error_t SrsDvr::initialize(SrsOriginHub* h, SrsRequest* r){ srs_error_t err = s原创 2017-12-10 20:54:09 · 7031 阅读 · 0 评论 -
RTMP协议详解
转载:http://blog.csdn.net/shangmingyang/article/details/50837852RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。随着VR技术的发展,视频转载 2017-12-10 17:29:46 · 549 阅读 · 0 评论 -
SRS 代码分析【HTTP-FLV传输实现】
http-flv技术实现:HTTP协议中有个约定:content-length字段,http的body部分的长度服务器回复http请求的时候如果有这个字段,客户端就接收这个长度的数据然后就认为数据传输完成了,如果服务器回复http请求中没有这个字段,客户端就一直接收数据,直到服务器跟客户端的socket连接断开。http-flv直播就是利用第二个原理,服务器回复客户原创 2017-11-27 13:11:49 · 4576 阅读 · 0 评论 -
SRS 代码分析【转发流实现】
SRS 代码分析【转发流实现】转载:http://lib.csdn.net/article/liveplay/50671publish的流和play的流怎么连接呢?这个恐怕是最绕的地方了。看了一上午的代码,淹没于各种数据结构与流程之中后,俺终于发现了连接publish和play的关键连个类是SrsSourceSrsConsumer负责连接着连个类实例转载 2017-12-10 16:39:59 · 3201 阅读 · 0 评论 -
SRS 代码分析【mpeg-ts解析】
SRS 代码分析【mpeg-ts解析】1.SrsTsContext的decode接口定义如下:int SrsTsContext::decode(SrsBuffer* stream, ISrsTsHandler* handler){ int ret = ERROR_SUCCESS; // parse util EOF of stream. // for e原创 2017-12-10 15:29:06 · 3841 阅读 · 0 评论 -
rtmp流转Hls流 与 flv转mpegts
转载:http://lib.csdn.net/article/liveplay/39906rtmp协议是adobe出的一种流媒体格式协议。是目前较为流行的协议的一种。HLS协议是苹果推出的一种流媒体协议,由于IOS系统不支持RTMP协议,如实现RTMP协议的流媒体需要自己实现RTMP的客户端,这使得移动手机端使用RTMP的流媒体增加了一些开发成本。H转载 2017-12-08 15:55:33 · 2610 阅读 · 0 评论 -
SRS 代码分析【RTMP连接请求响应】
rtmp服务端口监听:1).获取配置文件中设定的端口列表 _srs_config->get_listens()2).释放掉已经监听rtmp端口 close_listeners(SrsListenerRtmpStream)3).根据端口列表创建SrsListener实例,并启动监听listener->listen(ip, port))srs_error_t SrsServer::li原创 2017-11-20 09:39:53 · 3144 阅读 · 0 评论 -
SRS 代码分析【FLV文件解析】
FLV文件的结构SRS对FLV文件的解析实现1.FLV头部解析header部分记录了flv的类型、版本等信息,是flv的开头,一般都差不多,占9bytes。具体格式如下:文件类型3 bytes“FLV”版本1 byte一般为0x01流信息1 byte倒数第一位是1表示有视频,倒数第三位是1表示有音频,倒数第二、原创 2017-11-26 19:01:43 · 1470 阅读 · 0 评论