rtmp協議中基本的資料單元稱為訊息,當rtmp協議通過網路傳送資料的時候,訊息將會被拆分成更小的資料單元,稱為訊息快(chunk)。
訊息是rtmp協議中最基本的協議資料單元,不同message type id代表不同的訊息型別,有不同的功能!下面是rtmp報文的基本結構!
要使用rtmp協議進行推流,就要遵循rtmp協議標準,按照相應的rtmp推送流程進行!
rtmpdump官網的rtmp推流步驟
相關api如下:
rtmp_alloc()
rtmp_init()
rtmp_setupurl()
rtmp_connect()
rtmp_connectstream()
rtmp_read()
rtmp_enablewrite()
rtmp_connect()
rtmp_write()
rtmp_pause()
rtmp_seek()
rtmp_read()
rtmp_close()
rtmp_free()
在上篇文章點這裡已經將android端採集的資料傳到jni進行轉換,然後h.264編碼,並且讀取到sps,pps幀資訊,現在我們需要將資料封裝到rtmp packet當中,然後進行推送!
首先是構造rtmppacket,按照rtmp基本的協議資料單元進行資料填充:
填充rtmp資訊
填充前面的rtmp的相關資訊:
//訊息型別,rtmp_packet_type_video:0x09
packet->m_packettype = rtmp_packet_type_video;
//payload length
packet->m_nbodysize = body_size;
//time stamp:4位元組
packet->m_ntimestamp =
0; packet->m_hasabstimestamp =
0; //channel id,audio和vidio通道
packet->m_nchannel =
0x04;
// 有幾種型別,指定一種
packet->m_headertype = rtmp_packet_size_medium;
RTMP 直播推流時延
除了gop cache,還有乙個有關係,就是累積延遲。伺服器可以配置直播佇列的長度,伺服器會將資料放在直播佇列中,如果超過這個長度就清空到最後乙個i幀 當然這個不能配置太小,譬如gop是1秒,queue length是1秒,這樣會導致有1秒資料就清空,會導致跳躍。有更好的方法?有的。延遲基本上就等於...
RTMP協議分析及推流過程
簡介 1.rtmp 實時訊息傳輸協議 是adobe 公司開發的乙個基於tcp的應用層協議。2.rtmp協議中基本的資料單元稱為訊息 message 3.當rtmp協議在網際網路中傳輸資料的時候,訊息會被拆分成更小的單元,稱為訊息塊 chunk rtmp 握手 handshake 1.握手開始於客戶端...
Windows搭建RTMP推流伺服器
現在社會,直播越來越普通,網紅流量社會,到底直播是怎麼進行的呢,我們來嘗試在本地搭建直播環境 搭建伺服器 解壓後,在nginx 1.7.11.3 gryphon目錄下新建三個資料夾 worker processes 1 nginx程序數,建議設定為等於cpu總核數 events rtmp auto ...