1. 程式人生 > >H264 NALU 使用PS封裝 RTP傳送

H264 NALU 使用PS封裝 RTP傳送

最近由於專案平臺需求,要將H264 NALU封裝為PS再用RTP傳送,PS封裝按照ISO DEC-13818-1標準。一個PS包包含PS Header, PES Header, PS system header, PS system map等。

針對H264做如下PS封裝:

1、每個IDR NALU前一般都會包含SPS、PPS等NALU,因此將SPS、PPS、IDR 的NALU封裝為一個PS包,包括ps頭,然後加上PS system header,PS system map,PES header+h264 raw data。所以一個IDR NALU PS包由外到內順序是:PS header | PS system header | PS system Map | PES header |  h264 raw data。

2、對於其它非關鍵幀的PS包,就簡單多了,直接加上PS頭和PES頭就可以了。順序為:PS header | PES header | h264 raw data。

還有就是用rtp協議傳送時,如果一個PS包大於MTU時,會有分包問題。只需要簡單的分包傳送就可以了,但是同一個PS包的時間戳是相同的,需要注意。

以上是對只有視訊video的情況,如果要把音訊Audio也打包進PS封裝,也可以。當有音訊資料時,將資料加上PES header 放到視訊PES後就可以了。順序如下:

PS包=PS頭|PES(video)|PES(audio),再用RTP封裝傳送就可以了。

以上是H264 PS封裝的大致流程。PS一些頭的定義,在我的下載中,有需要的可以參考。

或者,加QQ群(219128816)一起探討流媒體方面的開發。

相關推薦

H264 NALU 使用PS封裝 RTP傳送

最近由於專案平臺需求,要將H264 NALU封裝為PS再用RTP傳送,PS封裝按照ISO DEC-13818-1標準。一個PS包包含PS Header, PES Header, PS system header, PS system map等。 針對H264做如下PS封裝: 1、每個IDR NALU前一般都

GB28181協議支援的H264PS封裝實現

1、寫在前面: 最開始接觸H264的PS封裝的時候,參考的是:關於對H264碼流的PS的封裝的相關程式碼實現 , 確實是很有幫助,但完全參照這個實現,發現問題也很多,主要還是對MPEG213818的封

ps封裝rtp/udp傳送

簡介         本文程式碼功能為,h264封裝為ps,再用rtp/udp傳送 程式碼 #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include &

ffmpeg攝像頭採集h264編碼RTP傳送

一. 相關API說明 1. av_register_all 2. avformat_network_init 不管是流媒體傳送還是流媒體接收, 需要先執行該函式. 3. avformat_alloc_context 初始化一個AVFo

利用ffmpeg進行攝像頭提取視訊編碼為h264通過RTP傳送資料到指定的rtp地址

話不多說命令如下: ffmpeg -f dshow -i video="Logitech QuickCam Easy/Cool" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://127

FFMPEG 實時解碼網路H264碼流,RTP封裝

初學FFMPEG和H264,解碼視訊流時遇到了很多麻煩,記錄一下研究成果。 我使用的FFMPEG 2.5.2版本,使用av_parser_parse2重組影象幀時遇到了一下麻煩! 下面是主要程式碼: RTP頭定義, typedef struct { /**/

h264兩種封裝格式區別

annexb 一個Access Units(AU)包含一個幀,一幀畫面包含一個或多個NALU(Network Abstraction Layer Units) 為了位元組對齊,每個NALU有起始碼,其中4位元組的起始碼0x00000001通常標誌流的隨機訪問點SPS, PP

PHP利用PHPmailer封裝傳送郵件

1、github上下載PHPmailer檔案https://github.com/PHPMailer/PHPMailer解壓縮,將src下PHPMailer、Exception和SMTP檔案複製到相應位置,更改裡面的名稱空間,然後編寫傳送郵件的程式碼 2、$mail = new PHPMaile

Vue 進階教程之:Axios配置JWT/封裝外掛/傳送表單資料

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 尤雨溪之前在微博釋出訊息,不再繼續維護 vue-resource,並推薦大家開始使用 Axios,本文就

flv檔案格式及h264 aac流封裝成flv

FLV檔案格式 FLV是流媒體封裝格式,我們可以將其資料看為二進位制位元組流。 FLV包括檔案頭(Flv Header)和檔案體(Flv Body)兩部分,其中檔案體由一系列的Tag及Tag Size對組成。Tag又可以分成三類:audio,video,

h264碼流在RTP中的傳輸(基於rfc3984)

  Timestamp: 時間戳 32 bits   synchronization source (SSRC) identifier:同步源標誌   contributing source (CSRC) identifiers:一般不用,作用源列表  H.264 Payload 格式定義了三種不同的

GB28181協議實現系列之----IPC音視訊PS封裝(5)

 RTP封裝PS    RTP報文頭格式(見RFC3550 Page12):     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+

H264/H265 PS 流分析

對於第一幀的第一個包開始為PS頭+系統頭+節目對映流 1) Pack start code:包起始碼欄位,值為0x000001BA的位串,用來標誌一個包的開始。 2) System clock reference base,system clock reference ex

ffmpeg編碼之RGB通過H264編碼並封裝成mp4

原始rgb檔案 h264編碼成功,並封裝成MP4檔案 執行截圖 日誌資訊 實現方式 extern "C" { #include <libavformat/avformat.h> #include <libswscale/

H264 NALU結構

當前流行的應該還算是h264,接下來中國廣播電視會使用avs,而國際上應該會使用h265(要收專利費)和Google的VP9(開源,無專利費) 一個h264視訊由N組GOP(group of picture)組成,GOP由一幀一幀被編碼的影象組成,一幀編碼影象由一個片(

H265(HEVC) nal 單元頭介紹及rtp傳送中的fu分組傳送詳解

        首先來介紹下h265(HEVC)nal單元頭,與h264的nal層相比,h265的nal unit header有兩個位元組構成,如下圖所示: 從圖中可以看出hHEVC的nal包結構與h264有明顯的不同,hevc加入了nal所在的時間層的ID,取去除了n

ffmpegj將h264與aac封裝成mkv/ts或者h264與mp3封裝成mp4/flv/avi測試程式碼

#include <stdio.h> #include <conio.h> #define __STDC_CONSTANT_MACROS #ifdef _WIN32 //Windows extern "C" { #include "libavfo

H264碼流的打包傳送(以live555為例)

H.264 視訊 RTP 負載格式 1. 網路抽象層單元型別 (NALU) NALU 頭由一個位元組組成, 它的語法如下:       +---------------+       |0|1|2|3|4|5|6|7|       +-+-+-+-+-+-+-+-+    

關於對H264碼流的PS封裝的相關代碼實現

真心 clip gef 但是 占用 udp 大致 結果 方法 轉自:http://www.cnblogs.com/lidabo/p/6604988.html 1、寫在開始之前: 最近因為新工作要維護別人留下的GB模塊代碼,先熟悉了流程,然後也試著封裝

RTP PS PES ES H264協議學習

參考:https://www.cnblogs.com/wainiwann/p/7477794.html https://blog.csdn.net/chenhande1990chenhan/article/details/78744344 https://blog.csdn.net/H514