移动端高性能Unity播放器实现方案

这篇具有很好参考价值的文章主要介绍了移动端高性能Unity播放器实现方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前情提要:
视听体验再进化——如何在24小时内全面升级你的视频应用
如何打造新时代的终端播放产品?

随着VR、AR、元宇宙等新玩法的出现,Unity平台的视频播放需求逐渐增加,比如下面两个动图就是在百度真实的案例。前者是演唱会场景,后者则是一个演讲会场。

通过这两个案例可以真切地感受到虚实结合给传统视听体验带来的改变。
unity播放器,行业观察与生活札记,unity,游戏引擎,ar,流媒体,音视频
unity播放器,行业观察与生活札记,unity,游戏引擎,ar,流媒体,音视频
目前的Unity播放器方案有以下两种:

  1. Unity自带的VideoPlayer,但是缺点在于支持的格式少
  2. 海外一些公司推出的Unity播放器插件,比如AVPro,EasyMovieTexture等,格式支持丰富,但是费用不菲,而且海外公司的技术支持也有限

所以在网络上能看到很多文章,介绍如何自己实现Unity播放器SDK,基本都是如下的思路:
从硬件解码器中取出YUV数据 -> 送到Unity上下文中进行渲染。

这个思路非常简单直接,问题也很明显

  1. 在4K高分辨率下,无论是数据拷贝,还是CPU、GPU之间的数据传递,都会带来严重的性能损失。即便是低分辨率,在一些低性能设备上,也有严重的性能问题。
  2. 对于Android MediaCodec,严格来说取出YUV数据的做法并非标准做法,所以有些厂商(比如MTK)的实现会有各种各样的问题。给开发者埋了很隐蔽的坑。

高性能方案

鉴于以上的原因,我们在实际业务场景中寻求更高性能的方案。具体方案思路如下:

  1. 让Unity环境和播放内核共享渲染context
  2. 播放器内核将视频数据绘制到一个/多个纹理id上
  3. Unity拿到纹理id,进行渲染

这样的方式,避免了数据在CPU和GPU之间的拷贝,彻底解决了高分辨率视频渲染卡顿的问题。实测4K分辨率下CPU占用率能降低50%。

更进一步,完全的3D体验

VR、AR、元宇宙场景下,视频具备了3D体验,那为什么不更进一步,让音频也具备3D效果呢?

基于这样的思路,我们引入了6DoF全景声空间音频方案,6DoF中的x,y,z参数对应位移信息,yaw,pitch,roll对应旋转信息,如下图所示
unity播放器,行业观察与生活札记,unity,游戏引擎,ar,流媒体,音视频
在Unity场景中,根据观众与视频画面的空间位置,设定具体的6DoF参数,就可以让场景中的声音也具备空间感。

如此,我们就可以为用户带来视觉、听觉上完全的3D体验。

怎么使用

以上技术都已在百度智能云Unity播放器SDK中开放,并且已经在百度业务中等到了实际应用,文章开始的两个例子就是使用我们的SDK来完成的。

欢迎各位开发者接入、测试,共建更完美的VR/AR/元宇宙视听体验。文章来源地址https://www.toymoban.com/news/detail-715870.html

到了这里,关于移动端高性能Unity播放器实现方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用unity插件AVProVideo制作一个视频播放器

    功能键有:播放/暂停,是否循环播放,音量控制,倍速控制,视频切换,后退前进,显示时间。 将对应内容拖到对应位置即可。 其中视频存放在streamingAssets文件夹中,视频名称存放在一个名为“name”的txt文件中,通过读取name中视频的名称控制上一个,下一个视频的播放。

    2024年02月11日
    浏览(29)
  • Unity播放器插件-AVPro Video - Ultra Edition介绍

    c# AVPro Video - Ultra Edition官方插件使用介绍 AvproVideo,官网中有免费的,免费的带了水印。不介意水印去下载,挺好使的。收费的在Unity商店中能找到:(这里我从淘宝上花“重金”买了一个玩玩)以前都是用的AvPro免费版的,1点几那种版本的,也挺好使,相对这个来说,这个就

    2024年02月09日
    浏览(28)
  • QtAV:基于Qt和FFmpeg的跨平台高性能音视频播放框架

    目录 一.简介 1.特性 2.支持的平台 3.简单易用的接口 二.编译 1.下载依赖包 2.开始编译 2.1克隆 2.2修改配置文件 2.3编译 三.试用 官网地址:http://www.qtav.org/ Github地址:https://github.com/wang-bin/QtAV ●支持大部分播放功能 ●播放、暂停、播放速度、快进快退、字幕、音量、声道、音

    2024年01月22日
    浏览(50)
  • Unity零基础到进阶 ☀️| 视频播放器 Video Player组件 详解

    🎬 博客主页:

    2024年02月13日
    浏览(37)
  • Unity背景模糊图片高斯模糊高性能的实现方案

    环境: unity2021.3.x 效果: 模糊前: 模糊后: 模糊前: 模糊后: 实现核心思路(shader): github地址:高斯模糊 Github地址

    2024年04月26日
    浏览(25)
  • Unity 视频播放器,基于VideoPlayer,实现滑动进度条,显示视频时长,全屏显示,音量调节

    unity播放视频的方式有很多种,但即轻量又好用的,还是unity自带的VideoPlayer,但没有视频基础操作的UI组件,本篇带大家对视频的播放,以及UI组件的实现 效果展示: Unity带UI操作,视频播放器   DEMO下载: https://gitee.com/jacobkay/videoplayer 一、安装方式 1、下载文件 2、将文件拖

    2024年02月02日
    浏览(45)
  • 【Unity3D热更新】Unity3D 零成本、高性能的C#的热更新框架:HybridCLR

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 相信只要做过热更新的小伙伴,都被热更新搞过心态吧。 我有一个小伙伴,本来是面向

    2024年01月16日
    浏览(40)
  • csf格式手机播放器(安卓csf格式播放器)

    手机播放视频文件的方法: 1.使用手机自带的安卓播放器播放即可。 2.如果您的手机不支持所播放的视频文件格式,请下载第三方视频播放器播放。播放这种格式,需要下载一个CSF转化器的CSF编译软件,软件名字叫ScenicEditor。 另外也可以直接用格式工厂转换,将CSF直接转换成

    2024年02月10日
    浏览(41)
  • Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器

    Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器实例的示例: 上述代码中,使用 getInstance() 方法获取 AudioPlayer 的单例对象,参数传入 Context 对象。 在 getInstance() 方法中判断单例对象是否为空,如果为空则创建新的 AudioPlayer 对象,否则返回已有的单例对象。 这样

    2024年02月12日
    浏览(34)
  • Android 13.0 系统多个播放器app时,设置默认播放器

     在13.0的系统产品开发中,对于在系统中有多个播放器的时候,这时候如果调用代码打开播放器,会出现多个播放器列表让用户 选择启动哪个播放器,所以产品开发需求需要设置默认播放器,当打开播放器的时候,就直接打开播放器就可以了,所以就需要 了解查询播放器列

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包