【数据压缩(十)】H264文件分析2
H264文件分析2
- 一、实验要求
- 二、实验原理
- 1、h264编码
- 2、h264解码
- 三、实验步骤
- 0、文件准备
- 1、264文件解码
- 1.1 解码`lan.264`文件
- 1.2 解码`demo.264`文件
- 2、264文件编码
- 2.1 固定码率,以不同的GOP长度及形状编码
- 2.2 相同GOP长度及形状,不同码率编码
- 3、分析码流
- 4、视频质量主观评价
- 5、率失真曲线
- 四、实验结论
一、实验要求
- 将自行选择或老师给的两个264文件进行解码,得到相应的YUV文件。
- 将两个视频序列编码为.264文件。
□固定码率,以不同的GOP长度及形状编码
■ GOP=15,2B帧;GOP=12,2B帧,GOP=9,2B帧
■ GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧
□相同的GOP长度及形状,不同的码率
■ 例:1000kb/s, 800kb/s,400kb/s,… - 用码流分析软件检查所生成的码流中各种编码模式和运动矢量等信息。
- 用播放器观看所生成码流的质量
- 生成率失真曲线
二、实验原理
1、h264编码
编码原理框图如下:
2、h264解码
解码原理框图如下:
三、实验步骤
0、文件准备
本次实验用到两个MP4文件,分别在线转为.264文件。
1、264文件解码
1.1 解码lan.264
文件
- 修改bin目录下的
decoder.cfg
文件:
InputFile = "lan.264" # H.264/AVC coded bitstream
OutputFile = "lan_dec.yuv" # Output file, YUV/RGB
- 运行命令
ldecod.exe -d decoder.cfg
进行解码
生成yuv文件:
1.2 解码demo.264
文件
- 修改bin目录下的
decoder.cfg
文件:
InputFile = "movie.264" # H.264/AVC coded bitstream
OutputFile = "movie_dec.yuv" # Output file, YUV/RGB
- 运行命令
ldecod.exe -d decoder.cfg
进行解码
生成yuv文件:
2、264文件编码
2.1 固定码率,以不同的GOP长度及形状编码
以刚刚解码生成的lan_dec.yuv
文件为例,取GOP=15,2B帧。
- 修改bin目录下的
encoder.cfg
文件(此处陈列需修改的内容):
# Files
##########################################################################################
InputFile = "lan_dec.yuv" # Input sequence
FramesToBeEncoded = 60 # Number of frames to be coded
SourceWidth = 320 # Source frame width
SourceHeight = 180 # Source frame height
OutputWidth = 320 # Output frame width
OutputHeight = 180 # Output frame height
##########################################################################################
# Encoder Control
##########################################################################################
IntraPeriod = 15 # Period of I-pictures (0=only first)
##########################################################################################
# B Slices
##########################################################################################
NumberBFrames = 2 # Number of B coded frames inserted (0=not used)
HierarchicalCoding = 0 # B hierarchical coding (0= off, 1= 2 layers, 2= 2 full hierarchy, 3 = explicit)
########################################################################################
#Rate control
########################################################################################
RateControlEnable = 0 # 0 Disable, 1 Enable
Bitrate = 45020 # Bitrate(bps)
RCUpdateMode = 2 # Rate Control type. Modes supported :# 0 = original JM rate control,# 1 = rate control that is applied to all frames regardless of the slice type,# 2 = original plus intelligent QP selection for I and B slices (including Hierarchical),# 3 = original + hybrid quadratic rate control for I and B slice using bit rate statistics#
- 运行命令
lencod.exe -d encoder.cfg
进行编码
- 方法同上,继续编码生成符合以下格式的.264文件,此处不再展示。
GOP=12,2B帧;GOP=9,2B帧;GOP=4,1B帧;GOP=12,无B帧;GOP=1,全I帧。
2.2 相同GOP长度及形状,不同码率编码
以lan_dec.yuv
文件为例,取GOP=15,2B帧,码率1000000bps。
- 修改bin目录下的
encoder.cfg
文件(在2.1的基础上仅改变码率):
OutputFile = "1000kb.264" # Bitstream
RateControlEnable = 1 # 0 Disable, 1 Enable
Bitrate = 1000000 # Bitrate(bps)
运行命令
lencod.exe -d encoder.cfg
进行编码
方法同上,继续以800kb/s,600kb/s,400kb/s,200kb/s,100kb/s的码率编码。
800kb/s:
600kb/s:
400kb/s:
200kb/s:
100kb/s:
3、分析码流
使用ESEyE软件打开生成的GOP=15,2B帧的test.264
文件,分析一组IPBB。
- I帧
- P帧
- B帧
- B帧
由以上可知:
- I帧全部都是帧内预测;
- P帧存在帧间预测和帧内预测,包括部分不编码的P_skip;
- B帧存在帧间预测和大量不编码的B_skip。
4、视频质量主观评价
对比只有码率不同的第一帧图片。
码率 | 图片 |
---|---|
1000kbps | |
800kbps | |
600kbps | |
400kbps | |
200kbps | |
100kbps | |
码率改变很大时,视频主观质量相差不大。
5、率失真曲线
以Y分量的PSNR值为y轴,对应码率为x轴作图。
可以初步得出结论:其他参数一致时,码率越高,视频质量越好。但当码率提高到一定程度时,提升效果变得不明显。
四、实验结论
视频编码效果无论从数据上看好坏与否,都要与人眼相匹配。从本次实验可以知道,一味的提升码率并不能持续的提高视频质量,人眼也较难看出质量的提升,同时,这也会造成编码成本的提升。
【数据压缩(十)】H264文件分析2相关推荐
- 1.2 H264文件分析
要想深入学习视频,就必须对h264文件有所了解,我就以前面海思摄像头生成的h264文件为例说明一下h264的基本知识,以方便后期rtsp传输视频时对h264打包. 附件:Hi3518编码H264 请先 ...
- 【数据压缩】WAV文件分析
AVI文件格式 什么是AVI AVI是音频视频交错(Audio Video Interleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式.AVI ...
- 【数据压缩2】TGA格式图片文件分析
一.TGA文件概述 1.什么是TGA格式图像? tga是由美国Truevision公司为其显示卡开发的一种图像文件格式,已被国际上的图形.图像工业所接受.现已成为数字化图像,以及运用光 ...
- 数据压缩(三)——AVI文件分析WAV文件分析
一.AVI文件分析 (一).AVI文件音频和视频的数据是如何放置的?交织放置or连续放置? 打开一个AVI格式文件,如下图: 在00000630行文件出现第一个"01wb"代表第一 ...
- Python编程基础:第三十节 文件检测File Detection
第三十节 文件检测File Detection 前言 实践 前言 我们通常会涉及到文件相关的操作,例如检测.读写.复制.删除等等.本节我们一起来学习文件检测相关知识,即检测指定路径下是否存在该文件. ...
- [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点
您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...
- 分析FLV文件分析和解析器的开源代码
分析一下GitHub上一份FLV文件分析和解析器的开源代码 GitHub源码地址:功能强大的 FLV 文件分析和解析器 :可以将flv文件的视频tag中的h264类型数据和音频tag中的aac类型数据 ...
- linux物理内存地址与iomem,一种Linux系统物理内存镜像文件分析方法_4
模块信息,如图7所示,给出了本发明的实施例中 模块结构关系图,modules变量指向某一个已加载模块结构体module地址,所有已加载模 块其module形成一个双向链表,如图7所示,据此可以获取到所 ...
- 【初学者必看】vlc实现的rtsp服务器及转储H264文件
小伙伴们在初学流媒体时往往会遇到以下问题: 1.找不到合适的rtsp测试地址: 2.找不到合适的h264测试文件: 其实soeasy,找不到咱就自己做! 准备工具: VLC,下载地址在官方下载:VLC ...
- linux内核中链表代码分析---list.h头文件分析(一)
linux内核中链表代码分析---list.h头文件分析(一) 16年2月27日17:13:14 在学习数据结构时,有一个重要的知识点就是链表.对于链表的一些基本操作,它的最好学习资料就是内核中的li ...
最新文章
- openresty开发系列21--lua的模块
- android webview加载网页,文字listview和image混合listview的实现
- lucene之Field属性的解释
- 前端学习(1370):错误处理中间件
- 【SGU】SGU每日练1·Little shop of flowers【DP】
- Android 系统自带的图标
- linux的poll_wait函数,select() 与 poll()两个函数接口的作用
- 有什么软件可以测试win10电脑性能,微软能否翻盘 Win10系统4K高分优化实测
- We FALL ASleep At Night, We Do REST Right
- 在桌面顶端使用终端(iTerm2—macOS上的Guake替代)
- Ubuntu20.4安装gnuradio艰辛之路
- 加密编码类型的密文特征分析
- Excel如何输入负数
- 学生来看我,我自我满足...........
- 游戏角色写实头发制作
- Java Web基础知识之安全:人生苦短,注意安全
- 动态SQL的 if 条件判断
- 财务系统建设者须知——财务知识碎片(一) 什么是会计科目、什么是会计账户?
- 数据库与身份认证:在项目中操作 MySQL
- 交通运输相关机器学习/深度学习相关资源列表,关于交通运输场景的机器学习/深度学习的资源这里都有
热门文章
- ora-01017:invalid username/password
- 发那科机器人override指令_发那科机器人如何改变自动的运行速度,为什么按加减后,焊接完成又变回原来的速度...
- 快手批量下载-支持作者所有视频无水印带标题
- ati 缺少关键性文件_ATI显卡优化
- c#实现文件转base64和base64转文件(文件为任意格式)
- C#中索引超出了数组界限如何解决
- Python实现SM4算法
- opencv图像处理笔记【1】:LBP算法的实现
- 认知机器人:机器人学
- ModelSim ALTERA 6.5b 下载安装以及使用