我想知道什麼是開始代碼以及如何在H 264編解碼器中查找i幀。基本上,我試圖使用Java加密視頻文件,如果有人解釋我如何解析視頻,文件來獲得使用Java的i幀?任何人都可以請回答。 感謝提前。什麼是H 264編解碼器中i幀的起始碼?
回答
如果流爲Annex-B格式,那麼可以在NAL單元之後查找等於0x000001的「起始碼前綴」。 NALU類型信息在第一個字節中提供。
上一個答案指的是nal_unit()中的nal_unit_type字段。 nal_unit的詳細語法見ISO 14496-10的7.3.1節()。
H.264和MPEG 2的不同之處在於H.264區分了I切片和IDR。 I切片本身可以被解碼成完整的圖像,但是之後解碼的切片有可能在I之前參考切片。第3.62節陳述「在解碼IDR圖像之後,解碼順序中的所有後續編碼圖像可以被解碼來自在IDR圖片之前解碼的任何圖片的預先解讀「。這就像一個MPEG 2封閉的GOP。返回nal_unit_type,請參閱表7-1,它表明IDR具有nal_unit_type 5,但如果您要查找I切片,則可以查看access_unit_delimiter()中的primary_pic_type(表7-5)(其中,部分7.3.2.4),或者你可以檢查slice_header的slice_type(表7-6)()(見第7.3.3節)
基於上述這裏的評論是一個簡單的代碼片段,您可以使用:
ByteBuffer bb = ... // Byte buffer with your frame or h.264 NAL stream
int marker = 0xffffffff;
while (bb.hasRemaining()) {
int b = bb.get() & 0xff;
if (marker == 1) {
if ((b & 0x1f) == 5)
System.out.println("IDR slice!! " + (bb.position() - 1));
}
marker = (marker << 8) | b;
}
如果你只是想知道一個給定的幀是否是一個IDR片(關鍵幀),你可以使用來自JCodec的H264Utils.idrSlice(http://jcodec.org):
ByteBuffer bb = ... // Byte buffer with your frame or h.264 NAL stream
if(H264Utils.idrSlice(bb))
System.out.println("IDR slice!!");
你想使用的庫的原因是因爲IDR NAL單元片不是在編碼幀中攜帶的只有一片,所以你將不得不通過SPS,PPS和SEI的序列來獲得,最終得到到您的IDR切片。
我能找到的第一個正確答案:) – 2013-08-21 13:10:35
- 1. H.264編解碼器
- 2. 解碼在iOS上編碼爲H.264的單幀編碼
- 3. H.264編碼器和解碼器在iOS中
- 4. C++中的開源H.264解碼器
- 5. 尋找JMF h.264/rtp編碼器和解碼器插件
- 6. 解碼H.264沒有流
- 7. h.264 udp流解碼
- 8. Flowplayer H.264視頻編碼
- 9. Java - h.264視頻編碼
- 10. H.264視頻編碼
- 11. 調諧FFmpeg H.264解碼器
- 12. Openmax on Android for H.264解碼器?
- 13. H.264解碼無法解析異常幀頭
- 14. 如何修改H.264標頭,以便解碼器將爲某些幀重複以前的編碼幀?
- 15. 如何在android中捕獲H.264編碼幀?
- 16. 編碼/解碼具有不同參數的H.264流
- 17. 通過Dash將原始h.264數據編碼到瀏覽器
- 18. 從哪裏開始寫小型h.264編碼器
- 19. 用於解碼H.264 RTSP流的庫
- 20. h 264硬件編碼/解碼對於IOS(IPhone/Ipad)?
- 21. libx264和ffmpeg如何對H.264進行編碼和解碼
- 22. Android:視頻編碼H.264和設置幀率不工作
- 23. 驗證視頻編碼爲H.264
- 24. 在Android上實時編碼H.264流
- 25. 使用FFmpeg編碼H.264 CBR視頻
- 26. 如何跳過h.264 P幀直到下一個I幀
- 27. 確定RTP流中H.264 I幀的末端
- 28. 在編碼時強制自定義H.264內部幀(關鍵幀)?
- 29. H.264和x.264有什麼區別?
- 30. Speex解碼的幀不是原始幀
的可能重複[如何解碼在Java環境中的H.264視頻幀(http://stackoverflow.com/questions/2165593/how-to-decode-h-264-video-frame-in-java-環境) – 2011-04-09 07:30:20