先准备一个H264文件,如果没有,可以使用以下方法。
首先下载ffmpeg,直接下载
http://www.ffmpeg.org/download.htmlhttp://www.ffmpeg.org/download.html
![](https://img.haomeiwen.com/i7794076/e669ae13dc260691.png)
下载Build版本,不要下源码。我把它解压到了D盘根目录下了,无需安装。
然后在windows 命令行输入命令
![](https://img.haomeiwen.com/i7794076/2479c16bb0360fa7.png)
ffmpeg -i ../2.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 ../test.h264
使用十六进制编辑器打开test.h264,推荐一款小巧的编辑器 HxD
![](https://img.haomeiwen.com/i7794076/22493e4949ea7cda.png)
下面我们开始分析数据:
h264常见的帧头数据为:
00 00 00 01 61 (P帧)
00 00 00 01 65 ( IDR 帧)
00 00 00 01 67 (SPS)
00 00 00 01 68 (PPS)
帧类型有:
NAL_SLICE = 1 非关键帧 # 00 00 00 01 61
NAL_SLICE_DPA = 2 片分区A
NAL_SLICE_DPB = 3 片分区B
NAL_SLICE_DPC =4 片分区C
NAL_SLICE_IDR =5 关键帧 # 00 00 00 01 65
NAL_SEI = 6 补充增强信息
NAL_SPS = 7 SPS帧 # 00 00 00 01 67
NAL_PPS = 8 PPS帧 # 00 00 00 01 68
NAL_AUD = 9 分解符
NAL_FILLER = 12 填充
对于H264而言,每帧的界定符为00 00 00 01 或者00 00 01
![](https://img.haomeiwen.com/i7794076/854affad9e8e9649.png)
上面的数据第一帧是00 00 00 01 67 64 .....
第二帧数据是00 00 00 01 68 EA......
第三帧数据是 00 00 01 65......
SPS对于H264而言,就是编码后的第一帧
PPS就是编码后的第二帧
I帧就是第三帧
![](https://img.haomeiwen.com/i7794076/b002a3d58295a43a.png)
网友评论