【青训营】-🎨走进Web多媒体技术

简介: 【青训营】-🎨走进Web多媒体技术

一、什么是Web多媒体技术


随着近几年抖音,快手,B站等音视频APP走进千家万户,丰富我们的娱乐生活,音视频技术的发展和学习也掀起来一波新的热潮,在业务需求的推动下,Web产品的音视频技术也是得到了很大的发展和突破。


Web前端


交互体验、前端工程化、跨端能力...


数字对媒体


音视频原理、封装容器、编解码算法...

Web多媒体技术主要分为以下几个方向:


  • 点播

主要分为短视频,中视频,长视频。

  • 直播

在现场通过设备采集现场的音视频数据,把这些数据推送到服务端,服务端进行处理,然后用他的客户端拉取直播流去观看直播。

  • 图片

我们需要对图片的下发,下载的网络链路进行监控,诊断,不同的图片的格式在不同浏览器下是不一样的,比如webp文件在safari浏览器不显示的,然后web多媒体工程师需要对webp文件进行解码,最终显示在safari浏览器中。

  • 实时通信

提供高质量低延迟的音视频数据通信能力,主要是应用在视频会议,在线教育还有一些互动娱乐的场景里面。

  • 云游戏

游戏运行在服务端,降低了客户端硬件要求。

  • 视频剪辑

在web端进行音视频的编辑,不需要在自己的编辑软件里操作。


二、音视频基础知识


假设8bit表示一个子像素,清晰度1280720,帧率25fpx,时长60s,未压缩视频大小 = 8bit3128025*60 = 3.9GB


经过H264压缩后视频大小 = 11MB,压缩比为360:1


204d835fac0d4ffbb2bb5efccc75af2e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


空间/帧内压缩


90529862305e4e66be41ef6e3333fc85_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


我们看上面这张图片,蓝天这块每个小块的相似度很高,表明它们之间有很大的冗余性的,可以用一个小块近似代替其他三个小块,只用保存一个小块的信息,可以节省很多流量,通过算法消除每个小块之间的信息冗余性,就可以大大压缩视频文件。


时间/帧间压缩


ca0e1da2c99f41feab7abafffe1924dc_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


上面两张图片中,只有球员,裁判,球迷是有差异的,变的地方都一样,因此也存在冗余性,这种情况也可以压缩。


编码格式发展


76b562bf789e4bfa843efd7fefc72565_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

容器封装格式


我们将这个视频通过编码器编码后得到的是裸流,比如使用264编码器,得到的就是264裸流,如果直接播放264裸流的话,就必须从头到尾播放,我们是无法进行操作的,所以我们需要把这个音视频的裸流包装一下,放在固定格式的文件里面,这种固定文件就叫做音视频的容器。

5400e71b115246e187e697d55b430974_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


7ecc28d71cf54f89a9a5154e36b90200_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


  • 作用:解码+渲染
  • 支持视频格式:MP4、MP3


2c2e44ba063f4e4faf46d56d9c4852db_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

b6aaa50182d44d36ac7a13587df35ee3_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


<body>
  <button onclick="playVid()">播放视频</button>
  <button onclick="pauseVid()">暂停视频</button>
  <button onclick="loadVid()">重新加载视频</button>
  <video id="vs" src="demo.mp4"></video>
  <script>
    const myVideo = document.getElementById("vs");
    function playVid(){
      myVideo.play();
    }
    function pauseVid(){
      myVideo.pause();
    }
    function loadVid(){
      myVideo.load();
    }
  </script>
</body>
复制代码


7601929991f8478285baac7478fe6c00_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


<body>
  <button onclick="getVolume()">音量是多少</button>
  <button onclick="setVolume()">将视频音量设置为20%</button>
  <button onclick="getCurTime()">获得当前播放时间</button>
  <button onclick="setCurTime()">将播放时间设置为第5秒</button>
  <video id="vs" src="demo.mp4"></video>
  <script>
    const myVideo = document.getElementById("vs");
    function getVolume(){
      alert(myVideo.volume);
    }
    function setVolume(){
      myVideo.volume = 0.2;
    }
    function getCurTime(){
      alert(myVideo.currentTime);
    }
    function setCurTime(){
      myVideo.currentTime = 5;
    }
  </script>
</body>
复制代码


f01cf6836d2e40eebf6f28aa6373294b_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


<body>
  <video id="vs" src="demo.mp4"></video>
  <script>
    const myVideo = document.getElementById("vs");
    myVideo.addEventListener('canplay',function(){
      alert('canplay');
    })
    myVideo.addEventListener('pause',function(){
      alert('pause');
    })
    myVideo.addEventListener('play',function(){
      alert('play');
    })
    myVideo.addEventListener('waiting',function(){
      alert('waiting');
    })
  </script>
</body>
复制代码


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


三、浏览器提供的原生多媒体能力


MediaSouce


  • 扩展浏览器视频播放能力,支持视频分段加载(支持传入fmp4分片),替代Flash播放器
  • 支持播放mp4(实现流式播放)、hls、flv等
  • 可实现视频分段加载、清晰度无缝切换、精确预加载等


0d6a34b3e84d436b8d9f0cffd7e96e74_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


mp4视频文件结构


84d6f8946ec7451981f74e303c350652_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


fmp4视频文件结构


366595cebde545689e9a3a72306a5ef9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


使用mse实现mp4流式播放


84cd963d8c474e0c816733e0831f530f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


加密音视频播放


对音视频做防盗链处理

1b5d24bc3d834b51b2ea6671ba3e3eee_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


自适应码率


根据网络情况自动选择清晰度播放

66486640b3894559856a8b9bdc8b3df2_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


弹幕


无碰撞,无重叠的弹幕是需要一定的算法来实现的

e57b47fd62c54eb48a81a5f773c7b44f_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


这里的防挡人像是怎么实现的呢?

原视频在转码的时候,实际上会使用计算机的视觉算法,对视频的每一帧进行检测,检测出人像的范围,然后并且生成了一个蒙版文件,当我们客户端开始播放的时候,会同时下发这个蒙版文件,然后播放器可以使用这个蒙版实现人像防遮挡的效果。


软解:实现Web端播放H265格式和国产浏览器防劫持


b48f92b6f7fc4b38aacb997fffce2927_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


网页推流


平时我们在直播要进行推流的话是要下载安装OBS这个软件的,现在呢,我们也是实现了在Web端新开一个页面就能实现一个推流的功能,主要是利用Web RTC技术来实现的。

f2d884dd77794e1baf7bfb8e2cc23cbc_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


图片解码


7ec375d81ce140558d0be1b137e0da96_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


云游戏和特点

68a636fa54264db7b86e69949d50f786_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

字节跳动Web多媒体技术发展


6b76b545913849aa804d8c149b92fff4_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


W3C音视频技术新标准


  • WebCodecs 更高效的能够调用浏览器音视频编解码能力的API
  • WebGPU 在Web端调用这个底层GPU图形计算的能力
  • WebVR、WebXR 给虚拟现实,增强现实这些设备提供渲染的能力


最后


⚽这篇文章带领大家学习了Web多媒体技术,相信你一定收获满满~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!

相关文章
|
3月前
|
存储 安全 关系型数据库
后端技术:构建高效稳定的现代Web应用
【10月更文挑战第5天】后端技术:构建高效稳定的现代Web应用
104 1
|
3月前
|
缓存 前端开发 JavaScript
前端技术探索:构建高效、响应式Web应用的秘诀
前端技术探索:构建高效、响应式Web应用的秘诀
115 0
|
2月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
54 6
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
68 3
|
2月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
88 1
|
3月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
302 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
2月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
138 2
|
2月前
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
3月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
100 0
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!