音视频面试涨知识(四)

news2025/5/20 22:10:57
视频格式播放体验流量占用情况
DASH统计直播推流端到播放端延时。支持和视频帧绑定的内容交互。比如,直播答题在播放端的弹窗等。
HLS对视频进行切片,按切片播放,缓存小起播快;拖动时间轴到任意时间播放时,可以快速定位到对应的切片进行播放,响应快。整体占用小,播放一个切片只下载一个切片内容;对于低码率的视频场景,因封装代价高导致流量占用相对较高。
MP4头文件较大,边下边缓存,起播相对HLS和DASH慢一些;拖动时间轴播放时,需要一定的时间缓存;市场上大多数的浏览器客户端均能够播放,播放成功率高。拖动时间轴播放时,仍然需要下载整个头文件,耗费流量大;因流量占用较大,建议用在短视频处理的场景。

1.HLS格式

1.1 如何区分直播和点播

  • 判断是否存在 #EXT-X-ENDLIST

    • 一个M3U8文件,如果结尾不存在 #EXT-X-ENDLIST,那么一定是 直播,不是点播

  • 判断 #EXT-X-PLAYLIST-TYPE 类型

    • '#EXT-X-PLAYLIST-TYPE'有两种类型:

      • VOD 即 Video on Demand,表示该视频流为点播源

      • EVENT 表示该视频流为直播源

1.2 HLS如何实现自适应码率

HLS有两种类型:

  • Media Playlist

  • Master Playlist:内部提供的是同一份媒体资源的多份流列表资源。其格式如下所示:

#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=150000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/low/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=240000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/lo_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=440000,RESOLUTION=416x234,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/hi_mid/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=640000,RESOLUTION=640x360,CODECS="avc1.42e00a,mp4a.40.2"
http://example.com/high/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=64000,CODECS="mp4a.40.5"
http://example.com/audio/index.m3u8
#EXT-X-ENDLIST

码率自适应技术:

  • Adaptive Bitrate Streaming,一种视频码率可以根据网络状况或客户端播放buffer情况自动调整的视频传输技术。

有三种不同的码率自适应算法:

  • Buffer-based:基于客户端的播放缓冲区buffer情况决策下一片段的码率档位

    • 设置保护窗口,当buffer小于保护窗的时候,降低码率;

    • 设置缓存限制:当buffer长度大于该限制的时候,提高码率;

  • Rate-based:基于预测的带宽去决策下一片段的码率档位

    • 通过对之前下载的视频切片的带宽进行收集处理, 进而预测下载下一个切片的网络带宽

  • 同时考虑预测吞吐量和buffer信息决策下一片段的码率档位

1.3 EXT-X-DISCONTINUITY

当HLS播放过程中编码参数发生变化的时候,需要加上#EXT-X-DISCONTINUITY字段分隔开,重启编码器。如果我想在HLS中插入广告,就需要加上这个字段。

  • file format

  • number and type of tracks

  • encoding parameters

  • encoding sequence

  • timestamp sequeue

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

  

1.4 TS结构介绍

TS也称MPEG-TS,其中TS是"Transport Stream",MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

  • TS格式是主要用于直播的码流结构,具有很好的容错能力。

  • TS流中不包含快速seek的机制,只能通过协议层实现seek。HLS协议基于TS流实现的。

TS文件(流)可以分为三层:

  • TS层(Transport Stream),TS层在PES层上加入了数据流标识和传输的必要信息。

  • PES层(Packet Elemental Stream),PES层在音视频数据上加了时间戳等对数据帧的说明信息。

  • ES层(Elementary Stream),ES层就是音视频数据

1.5 fMP4

fMP4 跟普通 mp4 基本文件结构是一样的。普通mp4用于点播场景,fmp4通常用于直播场景。

  • 普通mp4的时长、内容通常是固定的。fMP4 时长、内容通常不固定,可以边生成边播放;

  • 普通mp4完整的metadata都在moov里,需要加载完moov box后,才能对mdat中的媒体数据进行解码渲染;

  • fMP4中,媒体数据的metadata在moof box中,moof 跟 mdat (通常)结对出现。moof 中包含了sample duration、sample size等信息,因此,fMP4可以边生成边播放;

一个完整的fMP4文件是:moov + (moof + mdat)* N

2.DASH格式

工作原理:

  • 下载MPD文件,解析DASH相关信息;

  • 下载视频的Initialization Segment和音频的Initialization Segment;

  • 下载视频的第一个分片,下载音频的第一个分片;

  • 当视频和音频的第一个分片都下载完,播放器内部再进行一些相关处理后,就可以开始播放出画面。后续就是不断轮询更新MPD文件和下载后续的音频和视频分片。

作者:安纯旦

链接:音视频面试涨知识(四) - 掘金 

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

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

相关文章

dubbo2和dubbo3 入门简介

稳定版本:2.5.3 目前已恢复更新Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC通信、流量治理、可观测性等解决方案, 涵盖 Java、Golang 等多种语言 SDK 实现。3.0 版本的正式发布,标志着 Apache Dubbo 正式进入云原生时代。3.0 在通信协议、服务发现、部…

微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.1 初识OpenResty

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存48 多级缓存48.1 初识OpenResty48.1.1 初识OpenResty48.1.2 安装OpenResty48 多级缓存 48.1 初识Open…

python 使用tk报错

文章目录Preface解决方法问题1:问题2: **tk.Tk()** 这里的 Tk 的 k 是小写错误信息 ~~并没有什么实际作用/提示~~Preface 最近刚开始学习用python 的时候遇到一个对于我这样的新手来说比较棘手的问题. 我查询了好久, 大多数给出的答案就是代码写错了 而且是不给错误行数的那种…

微服务框架 SpringCloud微服务架构 多级缓存 48 多级缓存 48.3 请求参数处理

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 多级缓存 文章目录微服务框架多级缓存48 多级缓存48.3 请求参数处理48.3.1 OpenResty获取请求参数48.3.2 直接上案例48 多级缓存 48.3 请求…

Service 与 Pod 有什么联系?

目录前言一、创建 Deployment二、创建 Service三、集群外部访问前言 首先我们要清楚,Pod 中的容器很可能因为各种原因故障而死掉,如果真的发生故障,那 Deployment 等 Controller 会通过动态创建和销毁 Pod 来保证应用整体的健壮性。而每个 P…

java的垃圾回收浅谈

目录 并发标记问题 三色算法问题 浮动垃圾问题 漏标问题 cms的解决方式 g1的解决方式 跨代(区)引用 CMS垃圾回收日志 G1垃圾回收日志 垃圾回收过程其实都包含两步:标记回收。 标记算法: 引用计数:每个对象都有一个计数器&#xff…

【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)

Hive基础SQL语法 1:DDL操作 DDL是数据定义语言,与关系数据库操作相似, 创建数据库 CREATE DATABASE|SCHEMA [IF NOT EXISTS] database_name显示数据库 SHOW databases;查看数据库详情 DESC DATABASE|SCHEMA database_name切…

2022年都快完了,还学Access的人是不是傻?

2022年都快完了,还学Access的人是不是傻?这是某问答平台,讨论火热的话题。 该问题下,部分程序员拍手称好,对Access语言充满不屑,认为Access过时该被淘汰,笔者作为开发者,并不赞同。事…

【Linux】虚拟地址空间

文章目录❓什么是虚拟地址空间?😊我们先来看这样的一个程序:⚠️感性的认识虚拟地址空间😊Linux具体是怎么实现进程地址空间的❓为什么会存在虚拟地址空间?❓什么是虚拟地址空间? 虚拟地址空间是操作系统为了实现进程管理所设定的一种虚拟…

[附源码]Node.js计算机毕业设计高校学生选课系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Android 跨应用发送自定义广播

话不多说,直接看效果图和代码! 一、效果图 1、未发送广播之前,两个APP的主界面图; 2、发送之后,文本框内容改变。 二、代码 1、创建第一个APP (1)MainActivity中代码如下: p…

分享篇:第十届“泰迪杯”数据挖掘挑战赛-农田害虫图像识别(特等奖)一

1.1 赛题背景 昆虫的种类浩如烟海,农田常见的昆虫是人工生态系统的重要组成部分。分辨益 虫和害虫,保留益虫,消灭害虫,对于减轻害虫对农田的生产危害有重要意义。常见 农田害虫共有 138 种,天敌昆虫则为 40 种。病虫害…

D-UNet:一种用于慢性脑卒中病变分割的维数融合U型网络

摘要 二维卷积神经网络忽略了医学图像的三维信息,而三维卷积神经网络对计算资源的需求过大。而本文提出一种新的结构,称为维度融合网络(D-UNet)这个网络在编码阶段创新的结合了二维和三维卷积。所提出的网络结构实现了比2D网络更…

C语言快速过渡C++

下面只讲干货,方便C语言初学者快速上手cpp来刷算法题,如果是希望系统学习cpp的不建议继续阅读,仅限于快速使用 文章目录using namespace stdcin cout 头文件变量声明bool变量const定义常量string类字符串的定义与拼接字符串的输入字符串的处理…

Qt扫盲-QStackedWidget理论总结

QStackedWidget理论总结1. 简述2. 布局用法3. 页面切换4. 常用功能1. 简述 QStackedWidget和QTabWidget的功能类似,都是为解决大量的控件在一个页面上可能显示不出来,同时呢,这些控件也可以按一定方式分类,我们就可以把这些控件分…

JAVA文件基本操作与概念

文件的概念 狭义的文件: 存储在硬盘上的数据,以文件为单位,进行组织;文件夹也叫做"目录",也是一种特殊的文件(文件里存储的也是文件) 这章笔记的内容都是指狭义的文件 广义的文件: 操作系统…

Docker安装emqx详解(配置SSL证书、开启WSS、鉴权)

EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。 1 端口介绍 1883:MQTT 协议端口8084:MQTT/SSL 端口8083:MQTT/WebSocket 端口8080:HTTP API 端口18083:Dashboard 管理控制台端口 2 拉取镜像 …

视频文件转M3U8

前言 前段时间遇到一个播放视频的项目,为了防止登录的用户下载项目的视频,所以需要对视频加密,即使用户下载也不能播放;因为前端采用videojs,最后确认方案是将mp4转m3u8文件格式,来实现视频文件加密播放。下…

公共用房管理系统有哪些管理功能?

数图互通房产管理 数图互通公共用房管理系统的管理功能范围包括: 1、对全部公房进行图形化、电子化、规范、动态化管理。 2、房屋数据定义:可对校区、片区、建筑物、楼层、房间数据进行增删改查,对房间属性数据进行批量修改。 3、档案及多类型附件管理:可对房产的…

对antd-vue输入框的二次封装,显示长度限制,兼容v-decorator和v-model

背景&#xff1a;antd组件中输入框长度限制没有显示&#xff0c;不能像elementUI一样&#xff0c;所以自己来封装实现 目的&#xff1a;对antd-vue输入框的二次封装&#xff0c;显示长度限制&#xff0c;兼容v-decorator和v-model 效果图&#xff1a; 代码&#xff1a; <…