Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Web多媒体笔记

Web多媒体笔记

作者头像
赤蓝紫
发布于 2023-01-02 08:27:25
发布于 2023-01-02 08:27:25
1.2K00
代码可运行
举报
文章被收录于专栏:clzclz
运行总次数:0
代码可运行

Web 多媒体笔记

参加字节跳动的青训营时写的笔记。这部分是刘立国老师讲的课。

1. 前置知识

1.1 图像基本概念

图像分辨率:图像的像素数据,指在水平和垂直方向上图像所具有的像素个数

图像深度:指存储每个像素所需要的比特数。图像深度决定了图像的每个像素可能的颜色数,或可能的灰度数(单色图像)。例如彩色图像每个像素用 R, G, B 三个分量来表示,每个分量用 8 为所以像素深度是 24 位,可以表示的颜色数目是 2^24。单色图像每个像素需要 8 位,则图像的像素深度是 8 位,灰度数目为 2^8。

图像的大小不仅要看图像的分辨率,还要看图像深度

1.2 视频基本概念

分辨率:每一帧的图像分辨率

帧率:视频单位时间内包含的视频帧的数量

码率:视频单位时间内传输的数据量,一般用 kbps(千位每秒)表示。

视频的大小不仅要看图像的分辨率,还要看码率

2. 编码

2.1 为什么需要编码

如果不编码

假设一部电影的每一帧的分辨率都是 1920 × 1080。

那么每一帧的大小为 1920 _ 1080 _ 24 / 8 = 6220800 byte = 5.9M (24 就是上面的图像像素深度)

假设帧率为 30FPS,时长为 90 分钟,那么这部电影大小就是 5.9 _ 30 _ 60 * 90 = 933G(我的电脑竟一部电影都下不了)

2.2 DTS 和 PTS

DTS:解码时间戳,用来告诉播放器该在什么时候解码这一帧的数据

PTS:显示时间戳,用来告诉播放器该在什么时候显示这一帧的数据。

I 帧:帧内编码帧、关键帧,不需要参考其他帧。

P 帧:前向预测编码帧。P 帧由它的前一 P 帧或 I 帧预测而来。

B 帧:双向预测内插编码帧。B 帧由它的**前一帧以及后一帧预测而来。

实例:

首先,PTS 是 1、2、3、4、5、6

因为 P 帧需要由前一 P 帧或 I 帧预测而来,I 帧不需要参考其他帧。所以先解码第 1 帧,解码完第 1 帧后,第 2 帧的 P 帧才可以解码,依次类推。所以,DTS 是 1、2、3、4、5、6

首先,PTS 是 1、2、3、4、5、6

由上一个例子,依次解码第 1 帧、第 2 帧,想继续解码第 3 帧,发现第 3 帧是 B 帧,所以就去解码第 3 帧的后一帧(第 4 帧),所以 DTS 的前面部份是 1、2、4、3。同理,解码第 5 帧又会先去解码第 6 帧。所以,DTS 是 1、2、4、3、6、5

2.3 GOP

GOP(group of picture):两个 I 帧之间的间隔

每个 group 的第一帧是 I 帧(关键帧),每个 GOP 内的帧的解码不依赖于其他 GOP 的帧。

GOP 一般 2 到 4s。首先,I 帧是帧内压缩,占用存储空间大。所以 I 帧不适宜过多。如果 I 帧太少,也不行。比如一共有 1000 帧,我需要解码第 500 帧,如果只有一个 I 帧,则要解码第 1 帧、第 2 帧…第 499 帧。(这个场景可能是用户点击进度条时)

2.4 各种冗余

2.4.1 空间冗余

重复的只存储一次

2.4.2 时间冗余

只多存储有变化的

2.4.3 编码冗余

不同像素值出现的概率不同,概率高的用的字节少,概率低的用的字节多(霍夫曼编码)

上面的 demo:每一个像素值需要 24 位。上面例子,蓝色用 1 表示,白色用 0 表示。则只需要 2 位。

2.4.4 视觉冗余

人的视觉系统对某些细节不敏感,所以可以把人眼看不到的部分去除掉。

2.5 编码流程

2.6 编码格式

3. 封装

封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。(可能还有字幕信息)

4. 多媒体元素和扩展 API

4.1 video 和 audio

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<body>
  <button onclick="getLength()">获取视频长度</button>
  <p></p>

  <video
    src="http://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/byted-player-videos/1.0.0/xgplayer-demo.mp4"
    width="540px"
    controls
    muted
    autoplay
  ></video>

  <script>
    let v = document.getElementsByTagName("video")[0];
    v.playbackRate = "1.5";

    function getLength() {
      let length = Math.floor(v.duration);

      let minute = Math.floor(length / 60);
      let second = length % 60;

      document.getElementsByTagName(
        "p"
      )[0].innerHTML = `视频长度为${minute}${second}`;
    }
  </script>
</body>

除了上面的形式还可以用下面的 source 的形式,这样就可以添加多个不同格式的视频。当浏览器不支持时,可以换一个。

audio 和 video 类似就不多说了。

属性、事件不多说了,链接奉上。MDN video表格版

缺陷

  • 不支持直接播放 hls、flv 等视频格式
  • 视频资源的请求和加载无法通过代码控制
    • 分段加载(节省流量)
    • 清晰度无缝切换
    • 精确预加载

4.2 MSE

媒体源扩展 API(Media Source Extensions)

  • 无插件在 web 端播放流媒体
  • 支持 hls、flv、mp4 等格式视频
  • 可实现视频分段加载、清晰度无缝切换、自适应码率、精确加载
4.2.1 使用
4.2.2 MSE 播放流程

4.3 播放器播放流程

5. 流媒体协议

流媒体是指将一连串数据压缩后,经过网络分段发送,即时传输以供观看音视频的一种技术。

流媒体协议是一种标准化的传递方法,用于将视频分解为多个块,将其发送给视频播放器,播放器重新组合播放。

例子:HLS(HTTP Live Streaming),是 Apple 公司提出的基于 HTTP 的媒体流传输协议,用于实时音视频流的传输。目前被广泛用于视频点播直播领域。

6. 应用场景

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
音视频&流媒体的原理以及基础入门知识
当下,音视频、流媒体已经无处不在,直播已经火了几年,在后续的时间里面,人们聊天已经不仅仅满足与文字、而是更多的在于“类面对面”交流,能够实时感知对方的表情、动作。为此,有必要跟紧时代潮流,好好梳理梳理流媒体这门功课。
嵌入式音视频
2022/09/24
1.8K0
音视频&流媒体的原理以及基础入门知识
一张图概括淘宝直播背后的前端技术 | 赠送多媒体前端手册
2020年,直播带货火爆全网。想一探淘宝直播背后的前端技术?本文将带你进入淘宝直播前端技术的世界。
音视频开发进阶
2020/11/10
3.1K0
一张图概括淘宝直播背后的前端技术 | 赠送多媒体前端手册
音视频编解码常用知识点
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。
全栈程序员站长
2022/09/14
2K0
音视频编解码常用知识点
视频基础知识
说视频之前,先要说说图像。 图像,大家都知道,是由很多“带有颜色的点”组成的。这个点,就是“像素点”。
Gnep@97
2023/09/07
1K0
视频基础知识
音视频必知会(一)
随着通信技术的不断发展,互联网信息的传播与娱乐方式经历了从文字到图片再到音视频的转变,音视频通信,直播互动,短视频等应用百花齐放,特别是5G时代的到来,互联网对音视频开发者的需求会越来也大,有兴趣的同学可以把握机遇,提升自己,加入到这个行业当中。
PengJie
2021/01/03
1.6K0
iOS 音视频接入-音视频基础
今天又是一个阳光明媚的日子,我正在努力的coding,突然间项目主管来到跟前和我说,我们准备做一个直播项目。
小明同学接音视频
2020/09/27
2.3K0
多媒体知识
多媒体技术涵盖的面广,涉及的平台很多,商业化产品也很多。 但是其最核心的技术大致是一样的, 基本框图如下:
天天Lotay
2023/10/15
4150
视频帧里的I帧、P帧、B帧是什么?
I帧:intra picture,帧内编码帧。I帧通常是每个GOP的第一个帧,可以看作一个图像经过压缩后的产物,如上期所提到的HEIF图像压缩编码,实际就可理解为H.265/HEVC标准下视频编码过程中一个序列中的I帧。解码时只需要本帧数据就可以完成(因为包含完整画面 ),一个GOP中,I帧作为编解码的起点,能有效防止帧间预测误差累计扩散。
微帧Visionular
2024/11/14
9540
视频帧里的I帧、P帧、B帧是什么?
从0开始做播放器---编解码基础知识
注:参考自bilibili系列视频,从0开始做播放器-第6章-图像编码的基础概念(理论课)https://www.bilibili.com/video/BV1PK41157jz
瑶瑶
2020/06/03
1.3K0
音视频技术基础(一)--音视频技术概念基础
各位大佬好,我是一个刚入坑的小菜鸡,黑眼圈云豆。最近开始学习TRTC实时音视频技术,我会记录并分享我的一些学习心得和体会,欢迎各位大佬来一起交流指正。
黑眼圈云豆
2020/06/16
5.5K0
音视频技术基础(一)--音视频技术概念基础
视频直播之基础原理
SDK(Software Development Kit): 软件开发工具包 CDN(Content Delivery Network):内容分发网络
全栈程序员站长
2022/09/15
3.5K0
视频直播之基础原理
5G时代来临,前端开发工程师必须了解的音视频入门基础知识
本文将给大家进行音视频基础的常规知识点的梳理。当然,短短的一篇文章并不能让大家立即变成音视频领域的专家,但这些知识点已经基本涵盖了音视频的入门知识。我们将按照下面的内容给大家
IMWeb前端团队
2019/12/06
1.8K0
音视频面试题集锦 2022.04
前些时间,我在知识星球上创建了一个音视频技术社群:关键帧的音视频开发圈,在这里群友们会一起做一些打卡任务。比如:循序渐进地归纳总结音视频技术知识,绘制一幅音视频知识图谱,你可以看看《音视频知识图谱 2022.03》。再比如:周期性地整理音视频相关的面试题,汇集一份音视频面试题集锦。
关键帧
2022/06/13
1K0
高效传输:视频压缩技术在流媒体服务中的优化
对于视频流媒体服务而言,高效的视频压缩技术是至关重要的,它能够在保证视频质量的同时降低数据传输成本和带宽需求。本文将详细探讨视频压缩技术在流媒体服务中的优化应用,包括压缩算法、编码标准以及实际部署过程。文章将通过实例和代码示例,阐述视频压缩技术的原理、部署步骤以及未来发展方向。
二一年冬末
2024/04/26
9650
视频编码(1):可能是最详尽的 H.264 编码相关概念介绍丨音视频基础
(本文基本逻辑:视频编码的理论基础是什么 → H.264 视频编码的基本概念、编码工具、编码流程及码流结构 → H.265 的编码工具及改进 → H.266 的编码工具及改进)
关键帧
2022/06/13
9.4K0
视频编码(1):可能是最详尽的 H.264 编码相关概念介绍丨音视频基础
视频直播| 基础原理篇
一、直播难与易 `直播难`:个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多, 视频/音频处理,图形处理, 视频/音频压缩,CDN分发,即时通讯等技术,每一个技术都够你学几年的。 `直播易`:已经有各个领域的大牛,封装好了许多牛逼的框架,我们只需要用别人写好的框架, 就能快速的搭建一个直播app,也就是传说中的站在大牛肩膀上编程。 二、直播相关概述 1.一个完整直播app功能 1、`聊天` 私聊、聊天室、点亮、推送、黑名单
進无尽
2018/09/12
7.4K0
视频直播| 基础原理篇
视频直播基础知识
视频云,是以Paas服务模式,向开发者提供音视频编解码SDK和开放API,助力移动APP接入音视频功能,用户不需要后台开发和运维人员,就可以开发自己的视频网站或者移动APP应用。视频云主要使用的是流媒体技术,下面就来给大家介绍一下视频云相关的技术。
视频云直播helper
2019/02/22
8.6K0
视频直播基础知识
音视频基础
采样精度(采样深度):每个“样本点”的大小, 常用的大小为8bit, 16bit,24bit。
vitofliu
2021/07/05
2.6K0
直播平台开发,常用流媒体和视频传递方法
1.流媒体开发,负责网络层的传输,协议层负责网络打包,封装层负责编解码数据的封装,编码层负责图像、音频压缩
yunbaokeji柯基
2020/11/11
8760
直播平台开发,常用流媒体和视频传递方法
新知 | 流媒体源流常见问题与延迟分析处理
新知系列课程第二季来啦!去年的系列课,我们为大家介绍了直播、RTC、IM、媒体处理等音视频通信技术,这一次,我们将继续为大家带来全真互联时代下新的行业趋势、新的技术方向以及新的应用场景分享。今天,我们邀请到了腾讯云音视频技术导师——付秋平,他将结合实际案例,为大家介绍流媒体源流中常见的问题,以及延迟分析处理的方法。 今天的内容分为播放器播放流程、直播源流常见问题、直播延迟的产生与处理、WebRTC快直播四个部分。 播放器的播放流程,基本上是推流的逆向过程。推流端基于同一个时钟源进行音频和视频的采集,得
腾讯云音视频
2022/07/04
1.9K0
新知 | 流媒体源流常见问题与延迟分析处理
相关推荐
音视频&流媒体的原理以及基础入门知识
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验