rtmp
文章平均质量分 72
Jacob_job
音视频软件开发
展开
-
rtmp信令格式
rtmp以TCP方式推流,分为一个个消息包。一、握手 握手开始于客户端发送 C0,C1 块。 服务端在发送 S0 和 S1 之前必须等待接收 C0,也可以等待接收 C1。 服务端在发送 S2 之前必须等待接收 C1。 在发送 C2 之前客户端必须等待接收 S1 。 客户端在发送任何数据之前必须等待接收 S2。 服务端在发送任何数据之前必须等待接收 C2。1、 ...原创 2018-03-03 20:31:47 · 1261 阅读 · 0 评论 -
rtmp数据封装三-视频(H264&H265)
前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分成chunk的形式发送的。其实一帧媒体数据在拆分成chunk之前还需要进行必要的头部信息封装,本文介绍rtmp协议中H.264/H.265视频数据的头部信息封装。H.264 rtmp头部信息封装SPS PPSAVCDecoderConfigurationRecordframe t...原创 2018-08-21 00:16:34 · 3628 阅读 · 2 评论 -
rtmp数据封装二-AMF
简介rtmp协议在传输script数据onMetaData时使用AMF(Action Message Format)格式封装。AMF_TYPE对应的编号:0 : AMF_NUMBER1 : AMF_BOOLEAN,2 : AMF_STRING,3 : AMF_OBJECT,4 : AMF_MOVIECLIP,5 : AMF_NULL,6 : AMF_UNDEFINED,...原创 2018-08-20 09:54:09 · 1230 阅读 · 0 评论 -
rtmp数据封装一-块(chunk)
简介由于一帧音视频数据有时候会很大,比如几十M甚至更大。但是为了方便在网络上传输,需要把数据拆分成一个个较小的块,这里称之为消息块(Chunk)。常见的是每块大小为4000 byte左右。Chunk的结构如下:[Chunk Basic Header][Chunk Message Header][Extended TimeStamp][Chunk Data][Chunk B...原创 2018-08-20 09:53:20 · 2087 阅读 · 0 评论 -
rtmp信令交互过程分析七-音视频数据(video audio data)
概述在传输完元数据onMetaData之后就开始传输音视频数据了,如视频是H.264编码,第一帧视频帧需要是SPS和PPS,后面才是I帧和P帧。如果是发布端向服务器推流,方向是C->S,如果是播放器向服务器拉流,方向是S->C。音视频数据包的封装后面的文章在详谈,这里只是讲信令交互。举例发布端向服务器推流 C->SVideo DataRTMP ...原创 2018-08-20 09:52:13 · 1485 阅读 · 0 评论 -
rtmp信令交互过程分析六-元数据(onMetaData)
概述在publish或者play之后就是开始传输媒体数据了,媒体数据分为3种,script脚本数据、video视频数据、audio音频数据。首先需要传输的是脚本数据onMetaData,也称为元数据。onMetaData主要描述音视频的编码格式的相关参数。如果是发布端向服务器推流,则onMetaData的方向是C->S,如果是播放器向服务器拉流,则onMetaData的方向是S-&g...原创 2018-08-20 09:51:17 · 2730 阅读 · 1 评论 -
rtmp信令交互过程分析五-播放(play)
概述连接成功之后由客户端选择publish还是play,这里讲的是play。1、C->S : createStream2、S->C : _result服务端对客户端createStream请求的反馈3、C->S : getStreamLength、play、Set Buffer LengthgetStreamLength:获取stream的时间长度pl...原创 2018-08-20 09:50:09 · 1802 阅读 · 0 评论 -
rtmp信令交互过程分析四-发布(publish)
概述连接成功之后由客户端选择publish还是play,这里讲的是publish。1、C->S : releaseStream、FCPublish、createStreamreleaseStream:释放stream,这一步的作用是通知服务端释放对应的stream,以便接下来重新创建stream。FCPublishcreateStream2、S->C : _re...原创 2018-08-20 09:49:25 · 2742 阅读 · 0 评论 -
rtmp信令交互过程分析三-连接(connect)
概述握手之后就是连接(connect),由客户端发起,服务端响应,connect指定的app。1、C->S : connectapp:需要connect的app名称flashVertcUrlfpadcapabilitiesaudioCodecsvideoCodecsvideoFunction2、S->C : Window Acknowledgement...原创 2018-08-20 09:48:27 · 1865 阅读 · 0 评论 -
rtmp信令交互过程分析二-握手(Handshake)
rtmp信令第一步是握手(Handshake),握手有Simple Handshake和Complex Handshake,Simple Handshake为简单握手,不需要使用加密算法校验,Complex Handshake为复杂握手,需要使用openssl的算法校验。一、Simple Handshake概述1) C0 1 byte,表示客户端RTMP的版本号。2) C1...原创 2018-08-20 09:47:22 · 1179 阅读 · 0 评论 -
rtmp信令交互过程分析一-概述
后续会写一系列关于rtmp的文章,这是第一篇信令交互的概述。使用wireshark抓包分析rtmp推流和拉流过程的信令,大致如下:通用部分箭头>>>表示C->S,箭头<<<表示S->C>>> Handshake C0+C1<&a原创 2018-08-20 09:46:11 · 1216 阅读 · 0 评论 -
flv的格式
flv封装单元是以tag来表示的,一个tag可以是音频tag或者视频tag,或者脚本tag及其其他类型。一、flv的格式flvheader脚本tag(metadata)第一个视频tag(h264_spspps)第一个音频tag(aac_header)第二个视频tag(h264第一个关键帧)后面就是音频和视频tag交互存在…二、tag的格式:[TYPE] (1b...原创 2018-03-03 20:35:58 · 450 阅读 · 0 评论 -
rtmp数据封装四-音频(AAC&G711)
前面文章《rtmp数据封装一-块(chunk)》中讲到rtmp传输媒体数据时是把一整帧数据拆分成chunk的形式发送的。其实一帧媒体数据在拆分成chunk之前还需要进行必要的头部信息封装,本文介绍rtmp协议中AAC/G.711音频数据的头部信息封装。第一个byte包含音频的编码参数:1-4bit: audioCodeId5-6bit: 采样率 00 5.5KHZ, 01 11...原创 2018-08-21 00:18:08 · 4540 阅读 · 5 评论