Zax*_*Zax 2 video ffmpeg video-processing h.265 hevc
我使用HM-12.0参考代码创建了一个基本的bin流.因此输出是HEVC编码的bin流(比如input.bin).
我有一个任务涉及读取这个基本流的标题.那就是我需要从input.bin文件中获取诸如流宽度,高度等信息.
看到很多流后,我可以得出结论,所有这些bin流都是从序列开始的:
00 00 00 01
Run Code Online (Sandbox Code Playgroud)
因此,每当我在任何bin流中看到此序列时,我可以说该流必须由HEVC解码器解码.
此外,如果我想从input.bin获取宽度,高度,fps等(如ffmpeg中的ff_raw_video_read_header函数),那么需要执行哪些步骤来获取此信息?
我已经完成了HEVC草案的解析部分,但它对于我在视频领域的水平非常复杂.任何人都可以建议一种从编码的bin文件中获取所需信息的简单方法吗?
任何建议对我都很有帮助.提前致谢.
我见过你最近问了很多关于视频的问题.说到视频; 没有"简单的方法"这样的东西.
这是AVC的答案.获取H264Video流的尺寸
首先,fps通常不在ES中编码.这是一个容器级的东西.在AVC/HEVC中有一个地方,但你不应指望它被填写.
您已经找到了开始代码.对于记录,开始代码是2或更多00跟随但是01(它不总是00 00 00 01,它可以是00 00 01,00 00 00 00 01等)如果该序列曾出现在NALU中自然,它必须逃脱.因此,当使用NALU有效负载对00 00 01进行编码时,将更改为00 00 03 01.我提到这一点,因为如果在解析时遇到此序列,则必须忽略emulation prevention字节的存在(03).emulation prevention删除了字节的ES 称为原始字节序列有效负载(rbsp)
起始代码后的前两个字节有nal_unit_header.类型存储位1-5 ( ( NALU[0] >> 1 ) & 0x3F ).分辨率存储在SPS_NUT中,即33.一旦有了SPS,就可以解析它.
这带给我们指数golomb编码.基本上exponential golomb encoded整数(缩写ue为unsigned,或者se用于signed)是一个可变长度的整数.解码你数前导零.此计数将告诉您整数的长度(以位为单位).接下来,您将读取多个位并减去1以获取整数.签名变体是相同的,除了最后一位是符号位,例如:
1 = 0 = 0
010 = 1 = 1
011 = 2 = -1
00100 = 3 = 2
00101 = 4 = -2
Run Code Online (Sandbox Code Playgroud)
接下来使用Rec的7.3.2.2中的表解析sps.ITU-T H.265(04/2013)(第33页)
你可以从pic_width_in_luma_samples pic_height_in_luma_samples和conformance_window paramaters计算出来的拘留.
| 归档时间: |
|
| 查看次数: |
1952 次 |
| 最近记录: |