關鍵幀:位元組0
1 23 4
5 67 8
9 ab c
d ef 值
001fb
xx r
w&h
date time
length 含義
id 影象大小
時間戳幀長度
非關鍵幀位元組0
1 23 4
5 67 值
001fa
length 含義
id 幀長度
struct datetime
; 非關鍵幀的時間戳是根據幀率和對關鍵幀的偏移計數計算出來的。
給乙個例子:
今天就把mpeg4碼流的分析和它的i,p,b frame的判定方法在這裡簡要記錄一下吧,供日後的翻看和大家的參考。!
mpeg4碼流分析:
0x00, 0x00, 0x01, 0xb0作為乙個vos的開始;
0x00, 0x00, 0x01, 0xb6作為乙個vop的開始,緊跟著vop開始的,有乙個2bit 的標誌,用來表示這個frame到底是乙個 i frame,p frame,b frame抑或是s frame(gms-vop)
標誌如下:
00: i frame
01: p frame
10: b frame
11: s frame
但是,有關這 2bit 是在0xb6的後面位元組的高位還是低位,卻沒有很明確的描述。
於是又回頭開始針對某個mpeg4編碼好的檔案開始分析,結果終於發現,判定方法如下:
1.可以寫乙個判定vop,或者vos開頭的函式:
static unsigned char *find_vop_start(unsigned char *addrp, unsigned int findsizes)2. 讀乙個mpeg4碼流檔案,然後利用剛才寫的函式搜尋startcode:if(pos
else
return null;
}
size_t nread = fread(lpsrc, 1, lsize, fp);可以簡單拿個圖說明一下,下圖中,第乙個vos的開頭,第二個是乙個i frame:fseek(fp, 0, seek_set);
while (!feof(fp))
else }
if (p==null) break;
//判定vos是哪種profile
if (*(p-1)==0xb0)
if (*(p-1)==0xb6)
//繼續查詢下乙個vos/vop的startcode
poslast=pos;
pos=pos+4;
}
by lydia
mpeg4是什麼格式,mpeg4和mp4的區別
mpeg4是什麼格式,mpeg4和mp4的區別。mpeg4於1998 年11 月公布,原預計1999 年1月投入使用的國際標準mpeg4不僅是針對一定位元率下的 音訊編碼,更加注重多 系統的互動性和靈活性。mpeg專家組的專家們正在為mpeg 4的制定努力工作。mpeg 4標準主要應用於視像 vid...
H264和MPEG4起始碼 startcode
1.h.264起始碼 在網路傳輸h264資料時,乙個udp包就是乙個nalu,解碼器可以很方便的檢測出nal分界和解碼。但是如果編碼資料儲存為乙個檔案,原來的解碼器將無法從資料流中分別出每個nal的起始位置和終止位置,為此h.264用起始碼來解決這一問題。h.264編碼時,在每個nal前新增起始碼 ...
MPEG 4標準及其實現分析
mpeg 4技術的應用將使當前很多提供聲音和資料服務的系統得到進一步的擴充套件,根據涉及iso標準的版本 部分 類 profile 和等級 level 的不同,mpeg 4對應不同的技術。本文將討論所有不同的mpeg 4技術,研究mpeg 4的需求 架構和實現策略,並討論計算需求以更好地理解mpeg...