Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >音视频面试题集锦 2023.09(2)

音视频面试题集锦 2023.09(2)

作者头像
关键帧
发布于 2023-09-27 00:03:17
发布于 2023-09-27 00:03:17
90400
代码可运行
举报
文章被收录于专栏:关键帧Keyframe关键帧Keyframe
运行总次数:0
代码可运行

下面是 2023.09 月音视频面试题集锦的一些精选:

  • 1、简要介绍一下对 H.264 的了解?
  • 2、H.264 编码框架分层目的是什么?
  • 3、H.264 如何根据 NALU 判断当前视频帧的类型?
  • 4、介绍一下 I、P、B 帧编码、解码、显示顺序?
  • 5、H.264 与 H.265 有什么区别?

1、简要介绍一下对 H.264 的了解?

1)基础描述

H.264 是由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)和国际电传视讯联盟远程通信标准化组织(ITU-T)开发的系列编码标准之一。

2)码流结构

H.264 原始码流(裸流)是由⼀个接⼀个 NALU 组成,它的功能分为两层:VCL(视频编码层)和 NAL(⽹络抽象层)。

  • 视频编码层 VCL(Video Coding Layer):是对视频编码核心算法过程、子宏块、宏块、片等概念的定义。这层主要是为了尽可能的独立于网络来高效的对视频内容进行编码。
  • 网路抽象层 NAL(Network Abstract Layer):负责将 VCL 产生的比特字符串适配到各种各样的网络和多元环境中,覆盖了所有片级以上的语法级别。

3)两种封装

H.264 的两种封装:AnnexB 模式和 AVCC 模式。

  • AnnexB 模式:
    • 传统模式
    • 有 startcode,startcode 码是:00 00 0100 00 00 01 (3 字节或 4 字节)
    • SPS 和 PPS 在码流中分别作为一个 NALU
  • AVCC 模式:
    • 没有 startcode,SPS 和 PPS 以及其它信息被封装在 container 中,每⼀个 frame 前⾯ 4 个字节是这个 frame 的⻓度
    • ⼀般在 mp4、mkv 格式中常用 AVCC 模式

很多解码器只⽀持 AnnexB 这种模式,因此需要将 AVCC 模式做转换,在 ffmpeg 中⽤ h264_mp4toannexb_filter 可以做转换,实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const AVBitStreamFilter *bsfilter = av_bsf_get_by_name("h264_mp4toannexb"); 

AVBSFContext *bsf_ctx = NULL; 
// 初始化过滤器上下⽂ 
av_bsf_alloc(bsfilter, &bsf_ctx); 
// 添加解码器属性
avcodec_parameters_copy(bsf_ctx->par_in, ifmt_ctx->streams[videoindex]->cod ecpar);
av_bsf_init(bsf_ctx);

2、H.264 编码框架分层目的是什么?

对 H.264 编码框架进行分层的主要目标是为了有高的视频压缩比和良好的网络亲和性。

VCL 层负责视频的信号处理,包含压缩,量化等处理,NAL 层则负责解决编码后数据的网络传输。

这样可以将 VCL 和 NAL 的处理放到不同平台来处理,可以减少因为网络环境不同对 VCL 的比特流进行重构和重编码。

这样将编码和网络传输进行隔离,使功能单一、便于维护。

3、H.264 如何根据 NALU 判断当前视频帧的类型?

NALU 结构一般为:[NALU Header][NALU Payload],可以根据 [NALU Header] 这 1 个字节来获取帧类型,它的结构如下图:

  • F:1bit,禁⽌位,H.264 规范中规定了这⼀位必须为 0,值为 1 表示语法出错(编码出错),不可用。
  • R:2bit,被参考的级别,重要性指示位,取值越⼤,表示当前 NALU 越重要,需要优先受到保护,如果当前 NALU 是属于参考帧的⽚、序列参数集或图像参数集这些重要的单位时,本句法元素必需⼤于 0。
  • T:5bit,负荷数据类型,表示 NALU 单元的类型,1~12 由 H.264 使⽤,24~31 由 H.264 以外的应⽤使⽤。

常用的 NAL 头的取值类型:

0x

0b

类型

重要程度

0x67

0 11 00111

SPS

非常重要

0x68

0 11 01000

PPS

非常重要

0x65

0 11 00101

IDR 帧

非常重要

0x61

0 11 00001

I帧

重要

0x41

0 10 00001

P帧

重要

0x01

0 00 00001

B帧

不重要

0x06

0 00 00110

SEI

不重要

4、介绍一下 I、P、B 帧编码、解码、显示顺序?

我们以下图为例来介绍一下 I、P、B 帧的编码过程:

编码器编码一个 I 帧,然后向后跳过几个帧,用这个 I 帧作为基准帧对一个未来 P 帧进行编码,然后跳回到这个 I 帧之后的下一个帧。I 帧和 P 帧之间的帧可以被编码为 B 帧。之后,编码器会再次跳过几个帧,使用第一个 P 帧作为基准帧,编码另外一个 P 帧,然后再次跳回,用 B 帧填充显示序列中的空隙。这个过程不断持续,然后每间隔一定的帧数后插入一个新的 I 帧。

由于帧之间存在依赖关系,所以各帧的解码顺序和编码顺序是一致的,先被编码的帧在解码时就会先被解码。为了实现这一点,编码的时候需要根据每帧的编码顺序会为其记录上一个 DTS(Decoding Time Stamp)用于解码时按此顺序进行解码。

如上面介绍的编码过程,P 帧由前一个 I 帧或 P 帧来预测,而 B 帧由前后的两个 P 帧或一个 I 帧和一个 P 帧来预测,因而当存在 B 帧时,帧的编解码顺序和帧的显示顺序会有所不同,这时候就需要为每帧记录上一个 PTS(Presentation Time Stamp)用于解码后按顺序显示。

5、H.264 与 H.265 有什么区别?

1)主要区别

  • H.265 也称为高效视频编码 (HEVC),是 H.264 的升级和更高级的版本;
  • H.265 的编码架构大致上 和 H.264 的架构相似,主要也包含:帧内预测(intra prediction)、帧间预测(inter prediction)、转换(transform)、量化(quantization)、去区块滤波器(deblocking filter)、熵编码(entropy coding)等模块。但在 H.265 编码架构中,整体被分为了三个基本单位,分别是编码单位(coding unit, CU)、预测单位(predict unit, PU)和转换单位(transform unit, TU);
  • 比起 H.264,H.265 提供了更多不同的工具来降低码率,以编码单位来说,H.264 中每个宏块(macroblock/MB)大小最大为 16x16 像素,而 H.265 的编码单位最大为 64x64;
  • H.265 的帧内预测模式支持 35 种方向(而 H.264 只支持 8 种),并且提供了更好的运动补偿处理和矢量预测方法。

参考:Difference Between H.264 and H.265[1]

2)比较点

  • 压缩比:压缩比是区分 H.264 和 H.265 编解码器的主要因素。与 H.264 相比,H.265 提供了两倍的编码效率。这意味着 H.265 在提供相同编码质量的同时节省了大约 50% 的比特率。更具体而言,H.265 的平均比特减少在 4K UHD 时为 65%,在 1080p 时为 60%,在 720p 时为 58%,在 480p 时为 50%。
  • 视频质量:H.264 和 H.265 编解码器在相同比特率下的视频质量存在很大差异。在 H.264 中,块的边界可能会失真。这是因为每个宏块是固定的,每个宏块的数据是相互独立的。另一方面,使用 H.265 时,图像更清晰、更详细,并且具有更少的阻塞和伪影。这是因为它根据区域信息确定 CTU 的大小。因此,H.265 在压缩时优于 H.264,具有更好的图像质量;
  • 文件(码流)大小:编解码器对数字视频的压缩程度与需要传输或流式传输的最终文件大小直接相关。带宽越小,文件大小越低。通常,H.264 编解码器生成的视频比 H.265 生成的视频大 1-3 倍。因此,在文件大小和保存大文件的有限存储空间方面,H.265 胜过 H.264;
  • 兼容性:在兼容性方面,H.264 胜过 H.265,与 H.264 相比,H.265 的普及程度相当落后。如果 100 个设备和平台支持 H.264 编解码器,您会发现只有 30 个相应的设备和平台支持 H.265。您不能否认 H.265 是未来的编解码器,并且缓慢但肯定地,更多的平台和设备将适应 H.265;
  • 性能:关于整体性能比较,H.265 无疑胜过 H.264,但这并非没有它的背景。H.264 具有适用于几乎所有常见设备的日常用例。然而,H.265 编码需要高计算能力。因此,H.265 可以比 H.264 更有效地压缩视频,同时保持相同水平的图像质量。H.264 性能达不到 4K 流媒体的标准,但 H.265 做到了这一点。

更多关于 H.264 的细节参考:《可能是最详尽的 H.264 编码相关概念介绍》


参考资料

[1]

Difference Between H.264 and H.265: https://www.gumlet.com/learn/h264-vs-h265/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-25 08:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 关键帧Keyframe 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
AVCC/HVCC 与 Annexb 码流格式相互转换丨音视频工业实战
H.264 的码流中用于解码的关键信息包括 SPS、PPS,H.265 码流中则包括 VPS、SPS 和 PPS。H.264 码流有 AVCC 和 AnnexB 两种格式,H.265 码流则对应的有 HVCC 和 AnnexB 两种格式。通常工程实践中对 MP4 进行解码时默认是使用 AVCC、HVCC 码流格式,但由于 Android 平台的解码器通常仅支持 AnnexB 格式,这时候就需要对码流格式做一下转换。我们这篇文章里就来介绍一下如何用代码实现 AVCC/HVCC 与 AnnexB 码流格式的相互转换。
关键帧
2023/10/22
2K0
AVCC/HVCC 与 Annexb 码流格式相互转换丨音视频工业实战
音视频八股文(8)-- h264 AnnexB
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。
福大大架构师每日一题
2023/06/09
6280
音视频八股文(8)-- h264 AnnexB
音视频基础概念合集:148 个问题带你快速上车音视频丨音视频基础
音视频是一个有一定技术门槛的垂直领域,对于前端、iOS/Android 客户端、服务端开发同学来说,这都是一个不错的职业发展方向。对于刚开始接触音视频开发的同学,最头疼的问题应该是音视频纷繁庞杂的概念,如果删繁就简,音视频生产及消费的核心环节其实只有:采集(声音和图像的数字化) → 编码(压缩数据便于存储和传输) → 封装(按格式封装便于控制音视频的展现) → 传输(用于网络) → 解封装(封装的逆过程) → 解码(编码的逆过程) → 渲染(声音和图像的展现)。
关键帧
2022/06/13
1.2K0
音视频基础概念合集:148 个问题带你快速上车音视频丨音视频基础
H264之NALU解析
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称 为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC:
用户6280468
2022/03/21
2.3K0
H264之NALU解析
音视频基础(3):h264码流结构
H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。
用户6280468
2022/11/28
1.1K0
音视频基础(3):h264码流结构
H264和H265的nalu介绍
本篇介绍下H264和H264的编码格式,包括avcc,annexb,以及转换方法。annexb 用于实时流的场景,avcc用于多媒体文件,如mp4,mkv等场景。
一只小虾米
2022/10/25
2.8K0
H264和H265的nalu介绍
FFmpeg从入门到精通:SEI那些事
流媒体是采用流式传输方式在网络上播放的媒体格式,视频网站内容、短视频、在线直播这些视频形态,均属于流媒体的不同分支。流媒体大致包含三个层级:码流、封装和协议。从音视频编码器输出的码流,经过某种封装格式后,经过特定的协议传输、保存,构成了流媒体世界的基础功能。
LiveVideoStack
2021/09/02
1.6K0
FFmpeg从入门到精通:SEI那些事
H.264 媒体流 AnnexB 和 AVCC 格式分析 及 FFmpeg 解析mp4的H.264码流方法
来源:https://blog.csdn.net/shaosunrise/article/details/121548065
音视频开发进阶
2022/10/31
2.3K0
音视频八股文(8)-- h264 AnnexB
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准⾥称为H.264,在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10,⼜叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。
福大大架构师每日一题
2023/04/28
5460
视频编码(1):可能是最详尽的 H.264 编码相关概念介绍丨音视频基础
(本文基本逻辑:视频编码的理论基础是什么 → H.264 视频编码的基本概念、编码工具、编码流程及码流结构 → H.265 的编码工具及改进 → H.266 的编码工具及改进)
关键帧
2022/06/13
8.5K0
视频编码(1):可能是最详尽的 H.264 编码相关概念介绍丨音视频基础
学习音视频解码你应该知道的东西
查看详细的视频编码介绍请访问视频编码 我们重点研究一下 H.26X 系列 特点:侧重网络传输 包括:H.261、H.262、H.263、H.263+、H.263++、H.264(就是MPEG4 AVC-合作的结晶) H.264/AVC 优点
酷走天涯
2018/09/14
8140
学习音视频解码你应该知道的东西
H.264编码格式简单分析
  H.264的重要性不再提了。本文主要记录一下H.264的编码格式。H.264官方文档:https://github.com/jiayayao/DataSheet/tree/master/encode-decode/h264。
望天
2019/07/11
2K0
H.264编码格式简单分析
如何入门音视屏
保存视频的每一帧,每一个像素没要必要,而且也是不现实的,因为这个数据量太大了,以至于没办法存储和传输,比如说,一个视频大小是 1280×720 像素,一个像素占 12 个比特位,每秒 30 帧,那么一分钟这样的视频就要占 1280×720×12×30×60/8/1024/1024=2.3G 的空间,所以视频数据肯定要进行压缩存储和传输的。 而可以压缩的冗余数据有很多,从空间上来说,一帧图像中的像素之间并不是毫无关系的,相邻像素有很强的相关性,可以利用这些相关性抽象地存储。同样在时间上,相邻的视频帧之间内容相似,也可以压缩。每个像素值出现的概率不同,从编码上也可以压缩。人类视觉系统(HVS)对高频信息不敏感,所以可以丢弃高频信息,只编码低频信息。对高对比度更敏感,可以提高边缘信息的主观质量。对亮度信息比色度信息更敏感,可以降低色度的解析度。对运动的信息更敏感,可以对感兴趣区域(ROI)进行特殊处理。 视频数据压缩和传输的实现与最终将这些数据还原成视频播放出来的实现是紧密相关的,也就是说视频信息的压缩和解压缩需要一个统一标准,即音视频编码标准。
我就是马云飞
2018/10/25
1.1K0
H264码流之AnnexB和AVCC
H264的主要目标是实现高的视频压缩比和提供良好的网络亲和性(可适用于各种网络传输),因此在功能层面上划分为视频编码层VCL和网络提取层NAL两层
雪月清
2022/09/21
2.2K0
H264码流之AnnexB和AVCC
【音视频】H264编码基础
视频是由一帧帧图像组成,视频为了不卡顿,一秒钟至少要16帧画面,但是图片内容太大,传输不现实。因此需要对他们编码。
后端码匠
2022/12/05
1.4K0
【音视频】H264编码基础
H.264编码及AAC编码基础
本节重点讲解了 H.264 编码以及 AAC 编码,在对其进行讲解前先介绍了视频编码的实现原理。
Gnep@97
2023/09/10
1.2K0
H.264编码及AAC编码基础
H264和H265的视频编码
H.264是一种高度压缩数字视频编解码器标准,由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组建的联合视频组(JVT,Joint Video Team)共同制定,由此H.264既是ITU-T的H.264标准,又是ISO/IEC的MPEG-4标准的第10部分:高级视频编码(AVC,Advanced Video Coding),因而H.264别名为AVC、MPEG-4 Part 10以及ISO/IEC 14496-10,H.264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法。
春江花月夜
2023/12/24
4.5K1
H264和H265的视频编码
面试官常问的音视频技术点!
直播秒开是开发音视频项目中一个很重要的功能,因为如果用户在播放网络视频流黑屏的时间过长则会严重影响用户体验。一般我们有两种方式解决:
用户6280468
2023/08/31
9060
面试官常问的音视频技术点!
音视频压缩:H264码流层次结构和NALU详解
前面在讲封装格式过程中,都有一个章节讲解如何将H.264的NALU单元如何打包到TS、FLV、RTP中,解装刚好相反,怎么从这些封装格式里面解析出一个个NALU单元。NALU即是编码器的输出数据又是解码器的输入数据,所以在封装和传输时,我们一般处理对象就是NALU,至于NALU内部到底是什么则很少关心。甚至我们在编解码时,我们只需要初始化好x264编码库,然后输入YUV数据,它就会给你经过一系列压缩算法后输出NALU,或者将NALU输入到x264解码库就会输出YUV数据。
潇湘落木
2020/11/12
6.2K0
音视频压缩:H264码流层次结构和NALU详解
你需要知道的:H.264
我在今年年初离开 YOLO 加入了一家在流媒体领域具有极深积累的小公司,负责视频群聊 SDK 的开发工作,YOLO 是一款直播 APP,我常戏称这是从技术下游(SDK 使用方)跑到了技术上游(SDK 提供方)。不过事情当然不是这么简单,经过长期的思考和探讨,我最终确认:实时多媒体领域,更宽泛一点来讲,实时视觉、感知的展现,在未来极长一段时间内都存在很大的需求,也存在很大的挑战,所以这将是我长期技术积累的大方向。
LiveVideoStack
2021/09/02
9710
你需要知道的:H.264
相关推荐
AVCC/HVCC 与 Annexb 码流格式相互转换丨音视频工业实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档