Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >面试官常问的音视频技术点!

面试官常问的音视频技术点!

作者头像
用户6280468
发布于 2023-08-31 02:38:50
发布于 2023-08-31 02:38:50
9450
举报
文章被收录于专栏:txp玩Linuxtxp玩Linux

一、前言:

今天继续给大家分享最近星球上的星友音视频面试题目,希望对大家有用!

下面是具体面试问的问题:

二、面试题目:

1、请说下H264的两种形态:

  • Annex B格式:这种格式常用于网络流媒体传输,比方说RTP、RTSP、RTMP等等。他的格式特点如下:它拥有StartCode(00 00 00 01/00 00 01)作为分隔符,StartCode的作用是防止竞争,当数据中出现00 00 01 ,则会修改成00 00 031。更重要的是,对于AnnexB的分隔符不代表NALU长度。
  • AVCC格式:这种格式的分隔符能表示NALU长度,并且不定长。这种方式也是防止竞争字节,这种格式的文件多用于MP4文件。

2、在直播场景中如何做到解码端秒开

直播秒开是开发音视频项目中一个很重要的功能,因为如果用户在播放网络视频流黑屏的时间过长则会严重影响用户体验。一般我们有两种方式解决:

  • 推流端缩短GOP长度:在推流端设置GOPSIZE,一般来说GOP的长度会影响播放端的黑屏时间。GOP长度越长,找到I帧的时间就会变长,若解码端长时间没找到I帧,播放器就会处于长时间黑屏。若出现黑屏的时间过长,则可以考虑缩短GOPSIZE的长度。比方说,黑屏的GOPSIZE长度是60,则可以缩短GOPSIZE为5,此时解码端则会快速找到I帧,播放器基本上会秒开。
  • 设置服务端GOP缓存:这个方法跟第一个方法有点相似,也是设置GOP的属性。但这个方法是在服务端设置GOP属性,在服务端可以通过设置GOP-Cache缓存让播放器总是缓存着前一个I帧,这样的话播放器每次刷新都可以快速播放视频。

3、SPS和PPS的区别:

SPS和PPS都是H264最开始的两个识别帧,若解码器没有识别出SPS和PPS则会无法正常解码出视频。但是这两个识别帧,也有很多不同。

  • SPS:中文全称是序列参数集,它主要包含了一连续编码序列的参数,比方说标识符seq_parameter_set_id、帧数、POC约束、参考帧数目、解码图像尺寸等信息。
  • PPS:中文全称是图像参数集,它主要包含的是一个序列中的某几张图像。这其中包括pic_parameter_set_id、可选的seq_parameter_set_id、片组数目、初始量化参数等。

4、FLV格式为何常用在直播流媒体协议:

FLV的特点是封装后的音视频文件大小相对比较小、封装规范相对比较简单,所以FLV格式非常适用于网络传输。尤其在RTMP网络流媒体传输中,FLV占据着统治地位。一般FLV格式如下图:

FLV封装格式一般由FLV Header和FLV Body组成。这里面FLV Body是由一对(Previous Tag Size字段 + Tag)组成。Previous Tag Size字段排在Tag之前,占用4个字节。Tag通常分为三种类型:

  • 脚本数据类型
  • 音频数据类型
  • 视频数据类型。

5、TCP或者UDP传输视频码流的时候出现了粘包的情况,要如何解决:

所谓的视频流粘包,就是指一段视频码流无法识别出一帧完整的视频帧。我的回答是通过FFMPEG的抽帧api av_read_frame把每一个码流中的每一帧H264/H265码流获取到,并且通过内部的标识符00 00 00 01进行分割,最终分割成sps+pps+i作为一帧完整的视频帧。这样就可以解决TCPUDP粘包的情况。

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

本文分享自 txp玩Linux 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
音视频传输:RTP协议详解和H.264打包方案
前面讲解了PS、TS、FLV这三种媒体封装格式,现在新开一个系列讲解下传输协议,这里面会包含RTP、RTSP、HLS、RTMP等。当然最复杂的封装格式MP4在准备中,后面会把封装格式这个系列讲完。今天要说的RTP传输协议,有人也认为这是封装格式,因为协议中打包音视频要填写时间戳的相关信息,FFmpeg就把这个作为封装格式。我觉得都没啥问题,不过我更偏向认为是传输协议。
潇湘落木
2020/11/12
6.9K0
音视频传输:RTP协议详解和H.264打包方案
音视频面试题集锦 2022.05
1)如何根据 NALU 裸流数据来判断其是 H.264 编码还是 H.265 编码?
关键帧
2022/06/13
1.2K0
音视频面试题集锦 2022.05
音视频封装:FLV格式详解和打包H264、AAC方案(下)
因表示了前一个Metadata Tag的长度是311字节,这跟上篇分析结果是一致的;
潇湘落木
2020/11/12
3.4K0
音视频封装:FLV格式详解和打包H264、AAC方案(下)
音视频面试题集锦 2022.04
前些时间,我在知识星球上创建了一个音视频技术社群:关键帧的音视频开发圈,在这里群友们会一起做一些打卡任务。比如:循序渐进地归纳总结音视频技术知识,绘制一幅音视频知识图谱,你可以看看《音视频知识图谱 2022.03》。再比如:周期性地整理音视频相关的面试题,汇集一份音视频面试题集锦。
关键帧
2022/06/13
9630
音视频八股文(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
6760
音视频八股文(8)-- h264 AnnexB
音视频基础之复合流解析:TS流格式的讲解
复合流简单地说,就是一条流包含视频和音频。如果一条流只包含音频或者视频的话,我们称之为裸流,比方说H264裸流、aac裸流等。在音视频中,TS流(全称是:MPEG2-TS)是一种常用的复合流(目前属于最常见的复合流)。几乎所有的流媒体协议都支持TS流,如:RTSP、UDP、SRT等等(RTMP属于FLV流媒体协议,下一篇会详细介绍)。
用户6280468
2022/11/28
3.6K0
音视频基础之复合流解析:TS流格式的讲解
从0开始做播放器---编解码基础知识
注:参考自bilibili系列视频,从0开始做播放器-第6章-图像编码的基础概念(理论课)https://www.bilibili.com/video/BV1PK41157jz
瑶瑶
2020/06/03
1.3K0
音视频基础(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.2K0
音视频基础(3):h264码流结构
嵌入式音视频开发面试题:如何优化画面质量?
这里的话我主要简单介绍了公司的项目,然后我把每个知识点都讲解出来。这里大家根据自己的项目去介绍就行,最好把一些技术亮点都说出来!前面几期面试题目如下:
用户6280468
2023/08/31
5830
嵌入式音视频开发面试题:如何优化画面质量?
H.264封装成FLV
H264是一个个NALU单元组成的,每个单元以00 00 01 或者 00 00 00 01分隔开来,每2个00 00 00 01之间就是一个NALU单元。我们实际上就是将一个个NALU单元封装进FLV文件。
Helloted
2022/06/07
1.3K0
H.264封装成FLV
音视频&流媒体的原理以及基础入门知识
当下,音视频、流媒体已经无处不在,直播已经火了几年,在后续的时间里面,人们聊天已经不仅仅满足与文字、而是更多的在于“类面对面”交流,能够实时感知对方的表情、动作。为此,有必要跟紧时代潮流,好好梳理梳理流媒体这门功课。
嵌入式音视频
2022/09/24
1.8K0
音视频&流媒体的原理以及基础入门知识
音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)
全栈程序员站长
2022/09/07
1.4K0
音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
音视频面试题集锦 2023.09(2)
H.264 是由国际标准组织机构(ISO)下属的运动图象专家组(MPEG)和国际电传视讯联盟远程通信标准化组织(ITU-T)开发的系列编码标准之一。
关键帧
2023/09/27
1K0
音视频面试题集锦 2023.09(2)
【音视频】H264编码基础
视频是由一帧帧图像组成,视频为了不卡顿,一秒钟至少要16帧画面,但是图片内容太大,传输不现实。因此需要对他们编码。
后端码匠
2022/12/05
1.4K0
【音视频】H264编码基础
H.264 媒体流 AnnexB 和 AVCC 格式分析 及 FFmpeg 解析mp4的H.264码流方法
来源:https://blog.csdn.net/shaosunrise/article/details/121548065
音视频开发进阶
2022/10/31
2.4K0
音视频基础:H264 各种概念
温故而知新,然后发现H264好多流程以前还是不太熟悉。后续会用对比的方式学习H265。
字节流动
2021/12/20
2.1K0
音视频基础:H264 各种概念
音视频开发之旅(56) -H264/AVC基本结构
音视频编码的标准由标准发展组织制定,主要两大组织:ISO(国际标准化组织和国际电工委员会)和ITU-T(国际电信联盟的电信标准化部门)
音视频开发之旅
2021/09/04
1K0
音视频压缩:H264码流层次结构和NALU详解
前面在讲封装格式过程中,都有一个章节讲解如何将H.264的NALU单元如何打包到TS、FLV、RTP中,解装刚好相反,怎么从这些封装格式里面解析出一个个NALU单元。NALU即是编码器的输出数据又是解码器的输入数据,所以在封装和传输时,我们一般处理对象就是NALU,至于NALU内部到底是什么则很少关心。甚至我们在编解码时,我们只需要初始化好x264编码库,然后输入YUV数据,它就会给你经过一系列压缩算法后输出NALU,或者将NALU输入到x264解码库就会输出YUV数据。
潇湘落木
2020/11/12
6.3K0
音视频压缩:H264码流层次结构和NALU详解
音视频基础
采样精度(采样深度):每个“样本点”的大小, 常用的大小为8bit, 16bit,24bit。
vitofliu
2021/07/05
2.5K0
iOS AVDemo(10):视频解封装,从 MP4 解出 H.264/H.265丨音视频工程示例
iOS/Android 客户端开发同学如果想要开始学习音视频开发,最丝滑的方式是对音视频基础概念知识有一定了解后,再借助 iOS/Android 平台的音视频能力上手去实践音视频的采集 → 编码 → 封装 → 解封装 → 解码 → 渲染过程,并借助音视频工具来分析和理解对应的音视频数据。
关键帧
2022/06/13
6810
iOS AVDemo(10):视频解封装,从 MP4 解出 H.264/H.265丨音视频工程示例
相关推荐
音视频传输:RTP协议详解和H.264打包方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档