找回密码
 立即注册
查看: 356|回复: 0

Unity AVPro 插件使用

[复制链接]
发表于 2022-6-23 09:05 | 显示全部楼层 |阅读模式
一、概述


AVPro Video是项目中常见的视频播放插件,本文使用Unity 2020.3.11f和AVPro Video v2.4.1进行演示。

主要功能
    播放本地文件、URL 文件和自适应流格式支持线性和伽玛色彩空间透明度支持(原生和打包)8K 视频支持

平台兼容

    Apple

    macOS 10.13 and above, 64bit only, Metal only

    iOS 11.0 and above, 64bit only, Metal only

    tvOS 11.0 and above, Metal only

    Microsoft

    Windows 7, 8, 8.1, 10 and above (x86 and x86_64)

    Universal Windows Platform (UWP) 10 (x86 and x86_64, ARM and ARM64)

    Direct3D 11 and 12

    Android

    Android 4.3.0 (Jelly Bean, API level 18) and above (ARM7, ARM64 and x86)

    OpenGLES2 and OpenGLES3

流媒体协议

image.png

二、基础使用

2.1 创建视频资源


AVPro Video可以直接对原始引用也可以对原始视频进行封装处理。MediaReference资源是对原始视频资源的封装,可以指定本地视频文件,也可以给定url。也可以针对不同平台,使用不同的资源。

image.png

2.2 播放视频


image.png

在创建播放组件并添加资源后,理论上视频就可以正常播放了。但视频的播放只是按帧采样视频,并未指定采样到的纹理如何显示。AVPro Video提供了DisplayUGUI和ApplyToMesh两个组件,分别将纹理显示在UI和Mesh中。

指定资源路径时有Reference和Path两种方式。Reference就是2.1中提到的MediaReference。Path则是相对路径,AVPro Vidseo提供了以下资源搜索目录:

image.png

2.3 投射到UI & Mesh


image.png

Mesh中显示Video的操作类似:创建带有Mesh的对象,添加ApplyToMesh组件,赋值MediaPalyer组件。
三、拓展

3.1 播放信息

/// 获取视频时长double duration = mediaPlayer.Info.GetDuration();// 获取当前播放时刻double time = mediaPlayer.Control.GetCurrentTime();// 获取视频可选时间范围TimeRanges seekRanges = mediaPlayer.Control.GetSeekableTimes();// 视频播放跳转到24smediaPlayer.Control.Seek(24.0);// 视频播放跳转到最靠近24s的关键帧mediaPlayer.Control.SeekFast(24.0);// 视频帧数int durationFrames = mediaPlayer.Info.GetDurationFrames();// 等同于durationFrames - 1int maxFrame = mediaPlayer.Info.GetMaxFrameNumber();// 当前播放帧数int frame = mediaPlayer.Control.GetCurrentTimeFrames();// 视频播放跳转到第60帧mediaPlayer.Control.SeekToFrame(60);// 视频播放回退10帧mediaPlayer.Control.SeekToFrameRelative(-10.0);// 视频播放帧率mediaPlayer.PlaybackRate
视频帧率可以为负数,逆向播放。
3.2 缓存


如果平台支持缓存,则可指定从缓存中播放视频。但缓存需要手动添加
// 前平台是否支持缓存mediaPlayer.Cache.IsMediaCachingSupported()// 将媒体添加到缓存mediaPlayer.Cache.AddMediaToCache(url, headers, options);// 清除缓存mediaPlayer.Cache.RemoveMediaFromCache(url);// 停止缓存媒体mediaPlayer.Cache.CancelDownloadOfMediaToCache(url);3.3 Playlist Media Player


有时我们可能需要播放一组视频,PlaylistMediaPlayer组件为我们提供了这一功能。PlaylistMediaPlayer在切换视频时,需要两个MediaPlayer组件处理过渡效果。

image.png

播放内容在Playlist Items中定义,指定资源路径与播放模式。常用的设置为Loop选项。若未勾选Loop,则组件会按照列表资源进行播放

image.png

// 手动添加Itemprivate PlaylistMediaPlayer listComp;void Start(){    listComp = GetComponent<PlaylistMediaPlayer>();    listComp.Stop();    listComp.Playlist.Items.Clear();    MediaItem item = new MediaItem();    item.mediaPath = new MediaPath("AVProVideoSamples/飞天_1080P_.mp4", MediaPathType.RelativeToStreamingAssetsFolder);    item.loop = true;    listComp.Playlist.Items.Add(item);    listComp.Play();}3.4 自带Timeline拓展


添加宏AVPRO_PACKAGE_TIMELINE开启


asmdef文件添加程序集引用(Timeline以Package形式存在)

完成上图两个步骤后,可在Timeline创建视频播放轨道,指定播放MediaReference。

image.png

参考

    官方文档

转载自Unity AVPro Video使用 - 知乎 (zhihu.com)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 09:31 , Processed in 0.088008 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表