H.264碼流打包為RTP碼流
H264碼流打包成RTP包的程式碼如下:
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- #include <winsock2.h>
- #include <winsock2.h>
- //#include "mem.h"
- #define PACKET_BUFFER_END (unsigned int)0x00000000
-
#define MAX_RTP_PKT_LENGTH 1400
- #define DEST_IP "180.101.59.185"
- #define DEST_PORT 1234
- #define H264 96
- typedefstruct
- {
- /**//* byte 0 */
- unsigned char csrc_len:4; /**//* expect 0 */
- unsigned char extension:1; /**//* expect 1, see RTP_OP below */
-
unsigned char padding:1;
- unsigned char version:2; /**//* expect 2 */
- /**//* byte 1 */
- unsigned char payload:7; /**//* RTP_PAYLOAD_RTSP */
- unsigned char marker:1; /**//* expect 1 */
- /**//* bytes 2, 3 */
- unsigned short seq_no;
- /**//* bytes 4-7 */
-
unsigned long timestamp;
- /**//* bytes 8-11 */
- unsigned long ssrc; /**//* stream number is used here. */
- } RTP_FIXED_HEADER;
- typedefstruct {
- //byte 0
- unsigned char TYPE:5;
- unsigned char NRI:2;
- unsigned char F:1;
- } NALU_HEADER; /**//* 1 BYTES */
- typedefstruct {
- //byte 0
- unsigned char TYPE:5;
- unsigned char NRI:2;
- unsigned char F:1;
- } FU_INDICATOR; /**//* 1 BYTES */
- typedefstruct {
- //byte 0
- unsigned char TYPE:5;
- unsigned char R:1;
- unsigned char E:1;
- unsigned char S:1;
- } FU_HEADER; /**//* 1 BYTES */
- BOOL InitWinsock();
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <memory.h>
- #include "h264.h"
- #pragma comment(lib,"ws2_32.lib")
- typedefstruct
- {
- int startcodeprefix_len; //! 4 for parameter sets and first slice in picture, 3 for everything else (suggested)
- unsigned len; //! Length of the NAL unit (Excluding the start code, which does not belong to the NALU)
- unsigned max_size; //! Nal Unit Buffer size
- int forbidden_bit; //! should be always FALSE
- int nal_reference_idc; //! NALU_PRIORITY_xxxx
- int nal_unit_type; //! NALU_TYPE_xxxx
- char *buf; //! contains the first byte followed by the EBSP
- unsigned short lost_packets; //! true, if packet loss is detected
- } NALU_t;
- FILE *bits = NULL; //!< the bit stream file
- staticint FindStartCode2 (unsigned char *Buf);//查詢開始字元0x000001
- staticint FindStartCode3 (unsigned char *Buf);//查詢開始字元0x00000001
- //static bool flag = true;
- staticint info2=0, info3=0;
- RTP_FIXED_HEADER *rtp_hdr;
- NALU_HEADER *nalu_hdr;
- FU_INDICATOR *fu_ind;
- FU_HEADER *fu_hdr;
- BOOL InitWinsock()
- {
- int Error;
- WORD VersionRequested;
- WSADATA WsaData;
- VersionRequested=MAKEWORD(2,2);
- Error=WSAStartup(VersionRequested,&WsaData); //啟動WinSock2
- if(Error!=0)
- {
- return FALSE;
- }
- else
- {
- if(LOBYTE(WsaData.wVersion)!=2||HIBYTE(WsaData.wHighVersion)!=2)
- {
- WSACleanup();
- return FALSE;
- }
- }
- return TRUE;
- }
- //為NALU_t結構體分配記憶體空間
- NALU_t *AllocNALU(int buffersize)
- {
- NALU_t *n;
-
相關推薦
H.264碼流打包為RTP碼流
H264碼流打包成RTP包的程式碼如下: #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h&g
調用FFmpeg SDK對H.264格式的視頻壓縮碼流進行解碼
b- follow 分享圖片 vpd fff proc ofo com 進行 由於作者不習慣該編輯器,只是將本文的截圖貼了出來,詳文見:https://www.yuque.com/docs/share/cce69b1b-b619-44b5-acd1-efa229d8862
將H264碼流打包成RTP包
H264碼流打包成RTP包的程式碼如下:#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> #incl
檔案流轉換為base64碼 和 base64碼轉換為檔案流
package test.com.cs;import com.cs.Base64Convert;import junit.framework.TestCase;import java.io.FileNotFoundException;import java.io.IOExc
Linux下H.264碼流實時RTP打包與傳送
由於專案要求在DM6467T平臺上新增實時RTP打包傳送模組,這才找了找有沒有人分享 這方面的經驗。這裡需要感謝網友:yanyuan9527,他寫的文章對我幫助很大,可以說讓一個完全小白的人瞭解了RTP打包,連結在此:http://www.chinavideo.or
H.264碼流的RTP打包格式[FU-A]
本荷載型別允許分片一個NAL單元到幾個RTP包中。下圖 表示FU-A的RTP荷載格式。FU-A由1位元組的分片單元指示,1位元組的分片單元頭,和分片單元荷載組成。 FU指示位元組有以下格式: FU指示位元組的型別域的28,29表示FU-A和FU-B。F的使用在5。3描述。NRI域
libx264編碼---YUV影象資料編碼為h.264碼流
編譯環境:ubuntu12.04 目標平臺:ARM Cortex A9 交叉編譯器:arm-none-linux-gnueabi-gcc 4.4.1 基本步驟: 一、移植x264庫到ARM板,請看上一篇博文移植x264編碼庫 二、測試:
Wireshark Lua: 一個從RTP抓包裡匯出H.264 Payload,變成264裸碼流檔案(xxx.264)的Wireshark外掛
抓取一個包含H.264 Payload RTP包的SIP會話或RTSP會話後,用Wireshark的Play功能只能播放聲音,不能播放視訊。把RTP payload直接匯出成檔案後也是不能直接播放的,因為H.264 over RTP封包是符合RFC3984規範的,
【視頻編解碼·學習筆記】6. H.264碼流分析工程創建
clear href mark 一個 html filename down 創建 fail 一、準備工作: 新建一個VS工程SimpleH264Analyzer, 修改工程屬性參數-> 輸出目錄:$(SolutionDir)bin\$(Configuration)\,
H 264中NALU RBSP SODB的關係 弄清碼流結構
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
海思3518EV200 SDK中獲取和儲存H.264碼流詳解
1 /****************************************** 2 step 2: Start to get streams of each channel. 3 ************************************
H.264---碼流格式分析
1、H.264的基本流結構 H.264 的基本流(elementary stream,ES)的結構分為兩層,包括視訊編碼層(VCL)和網路適配層(NAL)。視訊編碼層負責高效的視訊內容表示,而網路適配層負責以網路所要求的恰當的方式對資料進行打包和傳送。引入NAL並使之與VCL分離帶來的好處包括兩方面:1、使
使用FFMPEG類庫分離出多媒體檔案中的H 264碼流
在使用FFMPEG的類庫進行程式設計的過程中,可以直接輸出解複用之後的的視訊資料碼流。只需要在每次呼叫av_read_frame()之後將得到的視訊的AVPacket存為本地檔案即可。經試驗,在分離MPEG2碼流的時候,直接儲存AVPacket即可。在分離H.264碼流的時候,
H264編碼器11( H.264 探索 第二部分 H264碼流格式)
來自:https://segmentfault.com/a/1190000006698552 表1中描述了所有可能的資料包型別。 Type Definition 0 Undefined
H.264碼流解析 一個SPS的nalu及獲取視訊的解析度
00 00 00 01 67 42 00 28 E9 00 A0 0B 77 FE 00 02 00 03 C4 80 00 00 03 00 80 00 00 1A 4D 88 10 94 00 00 00 01 00 00 00 01為NALu頭,其餘
【H.264/AVC視訊編解碼技術詳解】十二、解析H.264碼流的巨集塊結構(上)
《H.264/AVC視訊編解碼技術詳解》視訊教程已經在“CSDN學院”上線,視訊中詳述了H.264的背景、標準協議和實現,並通過一個實戰工程的形式對H.264的標準進行解析和實現,歡迎觀看! “紙上得來終覺淺,絕知此事要躬行”,只有自己按照標準文件以程式碼
H.264碼流分析
原文轉自:http://blog.163.com/[email protected]/blog/static/193507792010498440670/ H.264標準寫得比較繁複,所以考慮在瀏覽完Whitepaper之後就開始研讀X264程式碼。X264程
Linux安裝SRS伺服器轉發H.264碼流
操作步驟:2.得到srs-master.zip原始碼檔案,把它拷貝到Linux系統3.解壓檔案命令unzip srs-master.zip4.進入檔案安裝目錄命令cd srs-master/trunk5.生成預設Makefile命令./configure6.編譯命令make命
H.264視訊碼流解析
原理 H.264原始碼流(又稱為“裸流”)是由一個一個的NALU組成的。他們的結構如下圖所示。 其中每個NALU之間通過startcode(起始碼)進行分隔,起始碼分成兩種:0x00000
利用mp4v2實現H.264裸碼流實時封裝
1. mp4v2庫配置、交叉編譯 mp4v2 庫是一個專用於處理mp4容器的開源專案,其使用c++編寫,並提供c語言介面。 下載mp4v2庫的最新程式碼以後,使用標準linux configure