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

news2024/7/4 5:17:04

一、前言:

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

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

二、面试题目:

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约束、参考帧数目、解码图像尺寸等信息。

6cadb82c63d89fd405d75c9e5f4ef2fd.png
  • PPS:中文全称是图像参数集,它主要包含的是一个序列中的某几张图像。这其中包括pic_parameter_set_id、可选的seq_parameter_set_id、片组数目、初始量化参数等。

8dce35ca0663b14011b868262137b387.png

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

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

9830686686ae070bfe6c6c8f57a15ebf.png

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作为一帧完整的视频帧。这样就可以解决TCP、UDP粘包的情况。

三、最后:

最后分享一个篮球励志故事,在昨天的湖勇大战中,朗尼沃克超神发挥;从赛季进入湖人慢慢打上首发位置,但由于伤病等原因,跌出了首发位置,甚至成了饮水机球员,但是朗尼沃克从不忘记刻苦训练,G4终于证明了自己!这就是坚持的意义。

莫愁前路无知己,天下谁人不识君!

如果大家确实对嵌入式音视频感兴趣的话,可以加入星球来学习,大家关心的,视频课程有没有期限,这个放心,是永久的,也不会说让大家后期交什么其他的费用。

下面是第一部分课程内容:

0eac736298686cd19476aa7a8c53c638.jpeg

星球入口:

6c07ac93aa0d0a09efadd096baf012fb.jpeg

个人微信:

c7d05d200d8899b2d9e0be79c4e32187.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yum源下载,及安装本地rpm包

yum源下载: yumdownloader rpm包名 如 :要下载 关于 pcre2-devel的包, 发现需要 依赖: Downloading packages: (1/4): pcre2-10.23-2.el7.x86_64.rpm | 20…

架构师备战(一)-软考如何备考

我要备战的是系统架构设计师,那么软考有哪些可供我们选择的考试呢。 1、软考能考哪些 我们知道,软考的体系结构有很多,比如初级的程序员,中级的软件设计师,高级的系统架构师等。具体有哪些,大概有如下这些…

华硕ROG STRIX B760-G GAMING WIFI小吹雪D5评测:最能超的小主板 轻松提升14%

一、前言:华硕推出新版B760-G小吹雪主板 加入DDR5内存支持 和以往的每一代规格一样,DDR5内存上市初期的表现并不如人意,频率是高了,但延迟也高了,导致性能提升一般般。 经过一两年的演进,DDR5内存的时序延迟…

港联证券|熊市牛市出现的原因?出现时应该怎么办?

熊市和牛市是股市专业术语,都指的是股市的一种形式。那么熊市牛市出现的原因?出现时应该怎么办?下面就由港联证券为大家进行分析: 熊市牛市出现的原因? 熊市出现原因: 1、市场利空消息出现 比如公司业绩…

【Spring框架全系列】SpringBoot配置日志文件

🍧🍧哈喽,大家好,我是小浪。那么上篇博客我们学习了SpringBoot配置文件的相关操作,本篇博客我们将学习一个新的知识点,SpringBoot日志文件。🖥🖥 📲目录 一、日志是什么…

Git概念介绍,常用命令与工作流程整理 配图

首先附一张Git的cheat sheet 作为开始,方便查阅:https://education.github.com/git-cheat-sheet-education.pdf Git简介 Git大家肯定都不陌生了,象征性地再介绍一下:Git是一个版本控制系统,换句话说,它可…

TypeError: makedirs() got an unexpected keyword argument ‘exist_ok‘

背景: 自己在使用pyinstaller打包一个基于pyqt5的gan网络手写数字生成的项目的时候,打包过程中出现这个错误导致打包失败。 图示: 问题分析: 复制这个错误在百度上搜看到很多答案说是python版本的原因。2.7版本的python不支持…

Redis如何存储一个Java对象【内涵案例】

目录 Java原生序列化示例 GSON示例 使用fastjson存储Java对象到Redis时 Redis并不能直接存储Java对象,需要进行序列化或者转换成字符串等格式才可以进行存储。以下介绍两种常见的将Java对象存储到Redis的方案。 对象序列化,存储二进制数据 将对象进…

使用Chatglm-6b微调催收问答对的尝试

1.工作目录,如:mnt/d/work,下载源代码,并安装依赖 git clone https://github.com/THUDM/ChatGLM-6B cd ChatGLM-6B pip install -r requirement.txt 2. 从拥抱脸下载chatglm-6b-int4-qe到本地(GPU环境搭建参考浪潮服…

线性结构-栈

栈是Stack一个后进先出Last In First Out,LIFO的线性表,他要求只在表尾对数据执行删除和插入等操作。 栈就是一个线性表,可以是数组、也可以是链表。但它的操作有别于一般的线性表。栈的元素必须先进后出,也就是先进入栈的元素必须后出栈。而…

金三银四好像消失了,IT行业何时复苏

疫情时候不敢离职,以为熬过来疫情了,行情会好一些,可是疫情结束了,反而行情更差了, 这是要哪样 我心中不由一万个 草泥🐴 路过 我心中不惊有了很多疑惑和感叹 接着上一篇 一个28岁程序员入行自述和感受 自…

3年外包测试走进字节,真的泪目了.....

一提及外包测试,大部分人的第一印象就是:工作强度大,技术含量低,没有归属感!外包工作三年总体感受就是这份工作缺乏归属感,心里总有一种落差,进步空间不大,接触不到核心技术&#xf…

零基础如何学习项目管理?

零基础如何学习项目管理?我们可以从项目管理的思维、能力、工具、书籍阅读四个方面入手—— 1.项目管理的思维 (1)系统思考 项目管理需要从一个系统的角度来看待问题,将复杂的项目分解为小的部分进行管理,从而达到更…

Power BI 数据模型设计及搭建——星型模型雪花模型

前言 之前的笔记提到了《Power BI 数据模型的核心概念》,本文继续深入讨论数据模型的设计架构,同时介绍两种常用的数据模型:星型模型和雪花模型 BI 的数据模型和数仓模型有什么不同? 数据仓库和Power BI中使用的数据架构模型有一…

seaborn load_dataset报错的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

6000+字讲透ElasticSearch 索引设计

ElasticSearch 索引设计 在MySQL中数据库设计非常重要,同样在ES中数据库设计也是非常重要的 概述 我们创建索引就像创建表结构一样,必须非常慎重的,索引如果创建不好后面会出现各种各样的问题 索引设计的重要性 索引创建后,索引的…

Mac使用svn全教程(安装+命令操作项目)

Mac使用svn,包括安装以及命令检出项目提交项目,下面直接进入正题: 1.安装svn 首先Mac需要安装brew #安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"图1: 图2: 图3: 如…

java数组排序,升序和降序

文章目录 前言基本数据类型排序升序降序排列 基本数据类型包装类升序降序 对象排序升序降序 前言 对于数组的排序一直很疑惑,尤其是如何对数组进行降序排列,例如要对int[]类型的数组降序排列,这里来进行说明 基本数据类型排序 升序 int[]…

缓存失效的三大祸害:穿透、击穿、雪崩及应对策略详解

1、概述 缓存穿透、缓存击穿和缓存雪崩都是常见的缓存问题,下面分别介绍它们的定义和解决方法: 1)缓存穿透 缓存穿透指的是恶意用户或攻击者通过请求不存在于缓存和后端存储中的数据来使得所有请求都落到后端存储上,导致系统瘫痪…

【数据库复习】第五章 数据库编程1

存储过程和触发器 PL/SQL : SQL的扩展 增加了过程化语句功能 基本结构是块 块之间可以互相嵌套 每个块完成一个逻辑操作 1.定义部分 DECLARE ------变量、常量、游标、异常等 定义的变量、常量等只能在该基本块中使用 当基本块执行结束时&#…