Webcodecs音视频编解码与封装技术探索

1.背景

在web端处理音视频是一个复杂而又重要的课题,市场上主流的视频编辑通常采用服务端进行渲染导出,因为专用的服务器对音视频的编解码能力更强,所以服务端渲染导出的速度很不错;

少数编辑器在浏览器本地对视频进行处理,一方面对服务器成本非常友好,另一方面可以不需要注册等流程,在小型视频的渲染上用户体验更好。但是浏览器本地渲染对用户设备有一定要求,对浏览器的兼容性等等也有要求。

而经典的在浏览器本地处理视频的方案是通过ffmpeg.wasm,近些年Webcodecs API的出现与普及逐渐改变了这一现象。

ffmpeg.wasm的底层webassembly对ffmpeg多线程处理视频的兼容很差,GPU调用效果也不尽人如意,导致渲染视频的速度非常不理想,并且还要额外下载编解码器,整体使用体验存在很多不适。

WebCodecs API可以利用浏览器自带的FFmpeg,而且可以充分利用GPU,所以其执行效率是远高于webassembly的。

f5230228c08da71c1ca7e453dd829ed6.jpeg(该图取自Bilibili团队实验[1])

1.1功能对比

特性/功能 ffmpeg.wasm WebCodecs
目标 在浏览器中实现音视频处理 提供底层音视频操作API
技术基础 基于WebAssembly技术 基于现代Web浏览器API
跨平台兼容性 跨平台兼容性较好 跨平台兼容性一般
应用场景 实时视频预览、截图、教育与教程、社交媒体、数据分析 实时通信、视频编辑、自适应流媒体、机器学习
操作层级 提供简单的JavaScript API,方便集成到Web应用 更深入地控制媒体流,实现高效、低延迟的实时通信或视频编辑
前端集成难度 提供了简单的JavaScript API,集成相对容易 需要一定的音视频处理知识,集成难度可能稍高

2.WebCodecs 介绍


如果要问WebCodecs是什么,可以简单的概括为JavaScript赋予了通过浏览器底层对视频流的单个帧和音频数据块的底层访问能力的一项web技术。

简单地说,就是设置一个解码器,将视频编码字节块处理为视频帧/音频数据,或者反之,设置一个编码器,将视频帧/音频数据处理回编码字节块。

上文所说的WebCodecs API的解码器有:

名称 介绍
AudioDecoder 解码 EncodedAudioChunk 对象
VideoDecoder 解码 EncodedVideoChunk 对象

上表中EncodedAudioChunkEncodedVideoChunk就是上文提到的编码字节块。

上文所说的WebCodecs API的编码器有:

名称 介绍
AudioEncoder 编码 AudioData 对象
VideoEncoder 编码 VideoFrame 对象

上表中AudioDataVideoFrame就是上文提到的视频帧/音频数据

请注意,WebCodecs API并不提供对某一视频类型具体的编解码器,解码视频时&#x

  • 12
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Linux音视频编解码的路线可以参考以下步骤: 1. 了解AVS标准:AVS是中国的第二代信源编码标准,用于数字音视频的编码压缩。你可以先了解AVS的基本原理和技术特点,以及它在数字音视频产业中的应用。 2. 学习音视频编解码基础知识:音视频编解码是将原始音视频数据进行压缩和解压缩的过程。你可以学习音视频编码的基本概念、常用的音视频编码算法和标准。 3. 掌握Linux操作系统:Linux是一个广泛使用的开源操作系统,它在音视频领域有很多应用。你可以学习Linux的基本操作和命令,熟悉Linux环境下的开发和编程工具。 4. 学习流媒体技术:流媒体是指通过网络传输音视频数据的技术。你可以学习流媒体的基本原理、协议和常用的流媒体服务器软件。 5. 掌握音视频编解码工具:Linux上有很多开源的音视频编解码工具,如FFmpeg、GStreamer等。你可以学习这些工具的使用方法和参数配置,了解它们在音视频编解码中的应用。 6. 实践项目:通过实践项目来巩固所学的知识。你可以选择一些开源的音视频项目,如视频播放器、音频编辑器等,进行学习和实践。 总之,学习Linux音视频编解码需要掌握AVS标准、音视频编解码基础知识、Linux操作系统、流媒体技术音视频编解码工具,并通过实践项目来应用所学的知识。这样就能建立起一个相对完整的学习路线。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值