ffmpeg 从mp4上提取H264的nalu
1.獲取數(shù)據(jù)
ffmpeg讀取mp4中的H264數(shù)據(jù),并不能直接得到NALU,文件中也沒(méi)有儲(chǔ)存0x00000001的分隔符。下面這張圖為packet.data中的數(shù)據(jù)
從圖中可以發(fā)現(xiàn),packet中的數(shù)據(jù)起始處沒(méi)有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字節(jié),所以可以肯定這不是標(biāo)準(zhǔn)的nalu。
其實(shí),前4個(gè)字0x000032ce表示的是nalu的長(zhǎng)度,從第5個(gè)字節(jié)開始才是nalu的數(shù)據(jù)。所以直接將前4個(gè)字節(jié)替換為0x00000001即可得到標(biāo)準(zhǔn)的nalu數(shù)據(jù)。
2.獲取pps及sps
pps及sps不能從packet獲得,而是保存在AVCodecContext的extradata數(shù)據(jù)域中。如下:
如何從extradata中解析出sps及pps呢?ffmpeg中提供了一個(gè)流過(guò)濾器"h264_mp4toannexb"完成這項(xiàng)工作
?
https://blog.csdn.net/gavinr/article/details/7183499
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的ffmpeg 从mp4上提取H264的nalu的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux-进程切换,用户态进程,内核态
- 下一篇: FFmpeg音频编码 ---- pcm转