RTMP協議推流

2021-07-27 16:00:32 字數 1347 閱讀 4860

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 ...