2016-05-26 31 views
1

想知道如果任何人有關於H.264字節碼流的任何見解:如何H.264基本流解析成NALU

FFmpeg的命令行是:

fmpeg\" -s 320x240 -f avfoundation -r 30.00 -i \"0:none\" -c:v libx264 -preset ultrafast -tune zerolatency -x264opts crf=20:vbv-maxrate=3000:vbv-bufsize=100:intra-refresh=1:slice-max-size=1500:keyint=30:ref=1 -b:v 1000 -an -f mpegts -threads 8 -profile:v baseline -level 3.0 -pix_fmt yuv420p udp://127.0.0.1:5564" 

從理論上講,在基本流中H.264應該是這樣的:(view image
http://artsmesh.io/file/bde333e59dca5b1861afb09faa9a7b792cf38ece6676392495cd02944452bbbc.jpg

所以關鍵是要生成H.264視頻流單獨NALU的。所以我們應該這樣得到比特流:(view image)。 http://artsmesh.io/file/ce09393a8f2fb0074864aa7ae8df9e04b1c24c704859deb889e85fe3e313d573.png

我們需要像這樣得到真正的NALU類型:0x1F & NALU類型。所以0x27等於0x67

通常情況下,我們應該有這些NALU類型(0x1F & NALU類型的操作之後):

1:切片的非IDR畫面的。 (P幀)

5:片IDR圖片。 (I幀)

6:補充增強信息。 (SEI)

7:序列參數集。 (SPS參數)

8:圖片參數集。 (PPS參數)」,

9:訪問單元分隔符

但我從UDP得到的是這樣的從第一個UDP包: http://artsmesh.io/file/92680df9bbdfdc2beb0c67b43e04f0520ef54351c709ef1fce5e5a74cff20a88.jpg

在此UDP數據報,有事不是有意義的,在0x00000001起始碼報頭之後,NALU類型是0xff,而第二個是0xf0,他們都在H.264不確定的。

所以我無法找出爲什麼H.264流不工作

在同一UDP數據包(或同一個數據流會話)內,起始代碼頭始終是四個字節0​​還是三個字節0x000001

+0

你想念我認爲的圖像 – Ian

+0

謝謝,但我是這裏的新人,所以我不能添加圖像,對不對? –

+0

嘗試在可能的地方裁剪圖像,否則這些圖像太大(高度)。還缺少其他圖像鏈接(至少放置鏈接文本)。最後,這些字節可以粘貼爲文本(不是圖像),那麼我們甚至可以測試爲實際字節...... –

回答