当前位置: 首页 > article >正文

⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)

播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求,AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦,实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧,它能帮助我们轻松解决这些问题😎。

一、插件概述

Demolition Media Hap Pro Sync Windows是一款网络同步、业界认可的GPU加速Hap视频编解码器播放解决方案,专为Unity设计。它非常适合大型媒体安装、显示墙、投影以及沉浸式体验等场景。

(一)特点

  1. 硬件加速:无需安装任何外部编解码器,即可实现硬件加速的Hap视频播放,支持所有Hap风格,包括Hap、Hap Q、Hap Alpha、Hap Q Alpha、Hap R等。
  2. 低CPU使用率:视频帧大多在GPU上解压缩,有效降低CPU的负担,让你的项目运行更加流畅。
  3. 高分辨率支持:能够播放4k @ 120 fps、8k @ 60 fps或10k @ 60fps的视频(在支持的硬件上),甚至可以一次播放大量小视频,同时还具备极快的帧精确搜索功能。
  4. 网络同步:使用UDP网络在多台机器之间同步播放视频,实现局域网内的视频同步。
  5. 多种控制方式:支持使用Unity Timeline控制播放,也可以使用自己的时钟源控制视频播放,还能手动指定当前视频帧索引。
  6. 音频支持:支持多声道5.1/7.1音频,通过Unity Native Audio插件(无需网络同步)和AudioSource(通过网络同步,支持多声道音频)输出音频。
  7. 透明视频:支持使用Hap Alpha、Hap Q Alpha和Hap R编解码器的透明视频,是第一个在Unity中支持Hap Q Alpha/Hap R/HAP HDR的插件。
  8. 多线程解码:Chunked Hap支持更快的多线程解码,提高解码效率。
  9. 内存管理:可以将视频预加载到内存中,以应对SSD速度不够快的情况,并且支持可配置的RAM/GPU内存使用情况。
  10. 适合开发者和艺术家:提供C# API以及IMGUI/uGUI/Render to Material包装器,方便程序员进行开发,同时也适合艺术家进行操作。
  11. 示例场景:包含具有典型使用场景的示例场景(包括360/VR),方便用户快速上手。

(二)适用版本

该插件要求Unity版本为2019 - 2023(2022.3.12f1及更新版本,带有用于GDeflate GPU解压缩的DirectX12图形API),操作系统为Windows 8.1/10/11。

二、插件安装

(一)购买插件

你可以在Unity Asset Store上购买Demolition Media Hap Pro Sync Windows插件,价格为$850。购买后,将插件导入到你的Unity项目中。

(二)下载示例视频

导入插件后,打开示例场景可能会报错,这是因为没有下载官方案例所需要的示例视频。你需要下载示例视频,并将其放入对应目录,这样就可以正常运行示例场景了。

三、在Unity中播放大分辨率视频

(一)准备视频文件

在Unity中播放超4K视频,我们只能使用HAP编解码器的Mov格式视频。你可以使用以下方法将视频转换为Hap格式:

  1. 使用ffmpeg导出Hap格式
    • 对于HAP电影,使用命令:ffmpeg -i yourSourceFile.mov -c:v hap outputName.mov
    • 对于HAP Alpha影片,使用命令:ffmpeg -i yourSourceFile.mov -c:v hap -format hap_alpha outputName.mov
    • 对于HAP Q电影,使用命令:ffmpeg -i yourSourceFile.mov -c:v hap -format hap_q outputName.mov
    • 此外,还可以指定一些可选标记,例如:
      • -chunks N(默认为1;N为1 - 64之间的数字,但不超过播放系统的CPU核心数),如ffmpeg -i yourSourceFile.mov -c:v hap -format hap_q -chunks 4 outputName.mov
      • -compressor snappy-compressor none(默认为snappy;设置为none时可能会略微降低CPU使用率,但文件大小要大得多,且文件比特率是固定的),如ffmpeg -i yourSourceFile.mov -c:v hap -compressor none outputName.mov
  2. 使用AE导出:可以使用Adobe After Effects导出Hap格式的视频。
  3. 使用其他导出工具:也可以使用其他支持导出Hap格式的工具进行转换。

(二)在Unity中使用插件播放视频

  1. 创建Media对象:在Unity中,你可以通过代码创建一个Media对象来管理视频的播放。例如:
using DemolitionStudios.DemolitionMedia;// 创建Media对象
Media media = new Media();
  1. 加载视频文件:使用Load方法加载转换好的Hap格式视频文件。
// 加载视频文件
media.Load("path/to/your/video.mov");
  1. 播放视频:调用Play方法开始播放视频。
// 播放视频 
media.Play();
  1. 控制视频播放:你可以使用插件提供的各种方法来控制视频的播放,例如暂停、停止、快进、调整播放速度等。
// 暂停视频
media.Pause();// 停止视频
media.Stop();// 调整播放速度
media.PlaybackSpeed = 2.0f; // 两倍速播放

四、局域网播放视频同步

(一)设置网络同步

Demolition Media Hap Pro Sync Windows插件支持使用UDP网络在多台机器之间同步播放视频。要实现局域网视频同步,你需要进行以下设置:

  1. 配置网络参数:在Unity中,你可以通过代码配置网络参数,例如设置服务器地址、端口号等。
using DemolitionStudios.DemolitionMedia;// 创建Sync对象
Sync sync = new Sync();// 设置服务器地址和端口号
sync.ServerAddress = "192.168.1.100"; // 服务器IP地址
sync.ServerPort = 12345; // 服务器端口号
  1. 启动同步:调用Start方法启动网络同步。
// 启动同步 
sync.Start();

(二)同步播放视频

在多台机器上运行Unity项目,并确保它们在同一局域网内。在每台机器上,按照上述步骤创建Media对象并加载视频文件。当服务器启动同步后,所有客户端机器上的视频将同步播放。

五、注意事项

  1. 硬件要求:为了获得最佳的播放效果,建议使用支持高分辨率视频播放的硬件设备,例如高性能的GPU和CPU。
  2. 网络稳定性:在进行局域网视频同步时,网络稳定性非常重要。确保局域网内的网络连接稳定,避免出现丢包、延迟等问题。
  3. 视频格式:只能使用HAP编解码器的Mov格式视频,确保视频文件的格式正确。
  4. 插件版本:确保使用的插件版本与Unity版本兼容,避免出现兼容性问题。

六、总结

Demolition Media Hap Pro Sync Windows插件为Unity开发者提供了一个强大的解决方案,能够轻松实现大分辨率视频的播放和局域网视频同步。通过本文的介绍,相信你已经对该插件的使用有了更深入的了解。希望你在开发过程中能够充分发挥该插件的优势,创造出更加精彩的项目🎉

 

感谢大家的观看,您的点赞和关注是我最大的动力

不定时更新知识点和干货呦~

相关文章:

⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)

播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求,AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦,实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧,它能帮助我们轻松解决…...

【数据可视化-22】脱发因素探索的可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…...

kubernetes》》k8s》》Heml

Heml 资料 下载地址 安装 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# helm 添加 仓库 # helm repo add 仓库名称 仓库地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts/ # 移除仓库 helm repo remove 仓库名…...

MySQL表的操作 -- 表的增删改查

目录 1. 表的创建2. 表的查看3. 表的修改4. 表的删除5. 总结 1. 表的创建 1.查看字符集及效验规则 2. 表的创建 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;创建用户表1 创建用…...

GIS开发笔记(12)基于osg和osgearth实现三维地图上的轨迹线绘制

一、实现效果 二、实现原理 1.设置起点和终点,用函数模拟出轨迹点,如从武汉到长春; 2.将地理坐标点转换成为世界坐标点; 3.根据世界坐标点绘制轨迹线,并设置样式; 4.将轨迹节点挂接到根节点,并定位。 三、参考代码 void MainWindow::sltDrawTrajectory() {qDebug(...

MTKAndroid13-Launcher3 屏蔽部分app不让显示

实现Launcher3 桌面屏蔽部分内容,不让显示 文章目录 修改文件路径-实现方式基础-源码模块配置Launcher3 源码位置编译模块配置配置如下参数 属性配置:默认的Launcher3 选项配置GMS的Launcher3 配置 第三方Launcher需要默认为Launcher时候-系统Launcher3 …...

PostgreSQL 数据库备份与恢复全面指南20250424

PostgreSQL 数据库备份与恢复全面指南 在数据库管理中,备份与恢复操作对于确保数据安全性、可用性和完整性至关重要。PostgreSQL 作为一款开源关系型数据库系统,广泛应用于各行各业,尤其在现代 AI 和大数据应用中,作为数据存储的…...

专家系统的知识获取、检测与组织管理——基于《人工智能原理与方法》的深度解析

前文我们已经了解了专家系统的基本概念和一般结构,系统中有专业的知识才是专家系统的关键,接下来对专家系统中的知识是如何获取、检测、组织和管理的进行探讨。 1.专家系统的基本概念:专家系统的基本概念解析——基于《人工智能原理与方法》…...

contenthash 持久化缓存

以下是关于持久化缓存(contenthash)的深度技术解析,涵盖原理、配置策略及最佳实践,帮助我们构建高性能前端应用的缓存体系: 一、缓存机制核心原理 1. 浏览器缓存决策矩阵 触发条件缓存行为对应场景URL 未变化 + 强缓存有效直接读取磁盘/内存缓存未修改的静态资源URL 变化…...

让Editplus支持squirrel语言

用EditPlus配置完实现关键字、函数、高光代码、自动完成、代码调试。先看看效果: 主要是由 nut.stx (语法文件)和 nut.acp (自动完成)两个文件 实现 Nut.stx文件内容: ---------------------------------…...

Arm GICv3中断处理模型解析

1. Targeted Distribution Model(目标分发模型) 中断会被发送到软件指定的目标PE,且仅由该PE处理。 2. Targeted List Model(目标列表模型) 主要针对于SGIs(Software Generated Interrupts,软件生成中断)中断。 多个PE可以独立接收同一个中断。 当一个PE确认(ackn…...

Leetcode 2845 题解

还是要把自己做题的思路写出来的,但是结果可能还是得去观摩一下题解,无论是大佬写的题解还是leetcode官方写的题解,看完题解后再去反思才能有收获,即使下次遇见一样的题不见得能写出来,但有思路比没思路更重要。 今天写…...

【爬虫】DrissionPage-获取douyim用户下的视频

之前看过DrissionPage,觉得很厉害,比selenium简单,适合新手。因为盲目跟风逆向,今天看了一个DrissionPage案例直播,学习一下,真香哈。 DrissionPage官网:🛰️ 概述 | DrissionPage官…...

【Python爬虫基础篇】--3.cookie和session

目录 1.cookie 1.1.定义 1.2.参数 1.3.分类 2.session 3.使用cookie登录微博 4.使用session登录 1.cookie 由于http是一个无状态的协议,请求与请求之间无法相互传递或者记录一些信息,cookie和session正是为了解决这个问题而产生。 例子&#xff1…...

React 文件链条

在 React 项目中&#xff0c;首次展示在前台的是以下文件组合作用的结果&#xff1a; --- ### **核心文件链条** 1. **public/index.html** - 这是浏览器实际加载的入口文件 - 包含一个 <div id"root"></div> 容器 - 通过 <script> 标…...

分数线降低,25西电马克思主义学院(考研录取情况)

1、马克思主义学院各个方向 2、马克思主义学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、马克思主义理论25年相较于24年下降10分&#xff0c;为355分 3、25vs24推免/统招人数对比 学长、学姐分析 由表可看出&#xff1a; 1、 马克思主义学院25年共接…...

微信、抖音、小红书emoji符号大全

1、Emoji 日常符号 &#x1f463;&#x1f440;&#x1f441;️&#x1f444;&#x1f48b;&#x1f442;&#x1f9bb;&#x1f443;&#x1f445;&#x1f9e0;&#x1fac0;&#x1fac1;&#x1f9b7;&#x1f9b4;&#x1f4aa;&#x1f9be;&#x1f9bf;&#x1f9b5;&a…...

Cancer Cell|scRNA-seq + scTCR + 空间多组学整合分析,揭示CD8⁺ T细胞在免疫治疗中的“双路径” | 临床问题的组学解答

Cancer Cell&#xff5c;scRNA-seq scTCR 空间多组学整合分析&#xff0c;揭示CD8⁺ T细胞在免疫治疗中的“双路径” &#x1f44b; 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助&#xff0c;别忘了点赞、关注、评论&#xff0c;一起学习 近日&#xff0c;《Cancer Cell》…...

ubuntu(28):ubuntu系统多版本conda和多版本cuda共存

0. cuda(包括cudnn)、conda安装照常 注意&#xff1a; &#xff08;1&#xff09;多个conda不要安装到一个目录了&#xff0c;可以见下面的示例目录&#xff1b; &#xff08;2&#xff09;cuda&#xff08;包括cudnn&#xff09;不用纠结是否添加超链接 1. 需要修改环境配置…...

C# 下 using 块的作用 + VS2022 下 using 语法糖怎样工作

&#x1f50d; using 的本意是什么&#xff1f; using 是 C# 中用于 自动释放资源 的语法糖&#xff0c;适用于实现了 IDisposable 接口的对象&#xff08;比如数据库连接、文件、网络流等&#xff09;。 &#x1f9d0; 首先看下SqlSugarClient类部分源码&#xff1a; SqlSug…...

实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客

实体店的小程序转型之路&#xff1a;拥抱新零售的密码-中小企实战运营和营销工作室博客 在当今数字化浪潮的冲击下&#xff0c;实体店面临着前所未有的挑战&#xff0c;但小程序的出现为实体店转型新零售带来了新的曙光。先来看一组惊人的数据&#xff0c;据相关统计&#xff…...

UML 类图基础和类关系辨析

UML 类图 目录 1 概述 2 类图MerMaid基本表示法 3 类关系详解 3.1 实现和继承 3.1.1 实现&#xff08;Realization&#xff09;3.1.2 继承/泛化&#xff08;Inheritance/Generalization&#xff09; 3.2 聚合和组合 3.2.1 组合&#xff08;Composition&#xff09;3.2.2 聚…...

15.三数之和(LeetCode)java

个人理解&#xff1a; 1.使用双指针做法&#xff0c;首先对数组进行排序 第一重for循环控制第一个数&#xff0c;对数组进行遍历。双指针初始化为lefti1, rigthnums.length-1。然后使用while循环移动双指针寻找合适的数。因为返回的是数&#xff0c;不是下标&#xff0c;数不能…...

Spark读取Apollo配置

--conf spark.driver.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 --conf spark.executor.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 在spark的提交命令中&…...

如何通过 Websoft9 应用自托管平台一键安装任意版本 Odoo?

手工安装 Odoo 的复杂流程 环境准备阶段&#xff1a;安装 Docker 需熟悉 Linux 系统操作&#xff0c;需配置软件源、解决依赖冲突&#xff1b; 镜像获取阶段&#xff1a;从 Docker Hub 拉取官方镜像时可能因网络问题失败&#xff0c;且需自行验证版本兼容性&#xff1b; 容器…...

Anaconda3使用conda进行包管理

一、基础包管理操作 ‌安装包‌ 使用 conda install <包名> 安装指定包&#xff0c;支持多包批量安装和版本指定&#xff1a; conda install numpy # 安装单个包 conda install numpy scipy pandas # 批量安装多个包 conda install numpy1.21 # 指定版本 conda instal…...

exec和spawn

前言 需求&#xff1a;做一个electron应用&#xff0c;用node打开exe软件&#xff0c;打开后返回成功与否&#xff0c;打开的软件不会随electron应用的关闭而关闭 exec exec 第一个参数为要运行的command命令&#xff0c;参数以空格分隔。 child_process.exec(command[, opti…...

整平机:精密制造的“隐形守护者”

在金属加工车间里&#xff0c;一块表面凹凸不平的钢板经过一组高速旋转的辊轮后&#xff0c;神奇地变得如镜面般平整——这看似简单的场景背后&#xff0c;隐藏着现代工业对材料精度近乎苛刻的追求。整平机&#xff0c;这个常被忽视的工业设备&#xff0c;实则是高端制造业的基…...

Lesar: 面向 Lustre/Scade 语言的形式化模型检测工具

在《同步反应式系统》的第一课中&#xff0c;介绍了同步数据流语言 Lustre 生态中的形式化模型检查器 Lesar 的用法。Lesar 可对 lustre v4 语言以及 Scade 语言中部分数据流核心特性进行模型检查。 Lesar 介绍 Lesar 是 Verimag 研发维护的形式化方法模型检查工具。该工具的理…...

C++中的vector和list的区别与适用场景

区别 特性vectorlist底层实现动态数组双向链表内存分配连续内存块非连续内存块随机访问支持&#xff0c;通过索引访问&#xff0c;时间复杂度O(1)不支持&#xff0c;需遍历&#xff0c;时间复杂度O(n)插入/删除末尾操作效率高&#xff0c;时间复杂度O(1)任意位置操作效率高&am…...