AVPro
感觉我写的没多大用处,后面看看文档再完善一些。目前的东西是可以满足一些简单的需求的。
说明
标题名称 | 内容 |
---|---|
Unity版本 | Unity 2021 .1.18f1c1 |
AVPro 版本 | AVPro Video - Ultra Edition 2.5.6 |
IDE | VS2022 |
系统版本 | Win 10 1909 |
撰写日期 | 2022 11月15日晚 |
需要注意的地方
文档137页,看的累了,就不看了。
使用之前需要注意的地方
Legacy support removed wecan focus on the modern features
Removed support for Unity 4.x, Unity 5.xand Unity 2017.x
Windows
Removed support for legacy Windows Metro (Phoneand 8.1)
Removed support for Windows XP
macOS
Minimum version changed to 10.12
Dropped OpenGL support
iOS / tvOS
Dropped 32-bit support
Dropped OpenGLES support
Minimum version changed to 11.0
Direct3D12 support requires minimum Unity 2019.3
Only in the Ultra Edition
WebGL plugin still included, but we do not support it (see WebGL platform notes)
10-bitvideo support has someelements that only work in the Ultra Edition and has other limitations as documented
来自有道翻译
传统支持被移除,我们可以专注于现代功能
移除对Unity 4的支持。x,单位5。xand Unity 2017.x
窗户
移除对遗留Windows Metro (phone和8.1)的支持
移除对Windows XP的支持
macOS
最低版本更改为10.12
放弃对OpenGL的支持
iOS / tvOS
放弃32位支持
放弃对OpenGLES的支持
最低版本更改为11.0
支持Direct3D12需要最低Unity 2019.3
只有Ultra版本
**仍然包含WebGL插件,但我们不支持它(参见WebGL平台说明)。**
10位视频支持有一些元素只在超版本中工作,并有其他限制文件
不支持的平台
不支持的平台
Linux桌面
卢明(Magic Leap)
电视平台(Tizen、三星TV等)
游戏机(XBox*、PlayStation、Switch等)
* XBox One可能支持使用UWP构建选项。不过我们还没有对此进行测试。
编码支持
Hap编解码器仅支持Windows和macOS平台。
NotchLC编解码器仅支持Windows平台。
空间音频仅支持Windows和Android平台。
10位纹理仅支持Windows, macOS, iOS和tvOS平台。
缓存仅支持Android和iOS平台。
实验功能。只能在Windows上使用。
目的
通过这篇博客可以学会什么
- 使用AVPro播放视频
- 使用AVPro播放多个视频
- 了解AVPro的一些的事件
使用AVPro播放视频
-
导入插件
-
创建
MediaReference
(媒体引用)
-
选择媒体引用的来源的路径类型,当前选择的是来自于StreramingAssets Foder
-
选择文件
-
创建
MediaPlayer
源播放器
设置MediaPlayer
然后为Media Reference
赋值
是否自动播放视频。 -
创建一个
Canvas
-
创建一个
AVPro Video
-
添加
Media Player
播放多个视频
我看的官方包中是使用的Playlist Media Player
,我看了一下代码,很多,我就没在看下去了。然后我就自己想办法搞了一个。
MediaPlayer
好像是不能作为预制体进行保存的。
像这样进行布局之后,创建一个脚本clAVProTest
然后将脚本挂在到AVPro Video
上面。
需要将MediaPlayer
的auto play
设置为false
。
附加上极其敷衍的代码。
using System.Collections;
using System.Collections.Generic;
using RenderHeads.Media.AVProVideo;
using UnityEngine;
using UnityEngine.UI;
public class clAVProTest : MonoBehaviour
{
public DisplayUGUI display;//播放器
public MediaPlayer mediaPlayer1;
public MediaPlayer mediaPlayer2;
public MediaPlayer mediaPlayer3;
public MediaPlayer mediaPlayer4;//
public Button btnA;
public Button btnB;
public Button btnC;
public Button btnD;//播放的按钮
public Button btnStop;//停止
public Button btnPause;//暂停
public Button btnPlay;//播放
void Start()
{
btnA.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Stop();
display.CurrentMediaPlayer = mediaPlayer1;
display.CurrentMediaPlayer.Control.Play();
});
btnB.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Stop();
display.CurrentMediaPlayer = mediaPlayer2;
display.CurrentMediaPlayer.Control.Play();
});
btnC.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Stop();
display.CurrentMediaPlayer = mediaPlayer3;
display.CurrentMediaPlayer.Control.Play();
});
btnD.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Stop();
display.CurrentMediaPlayer = mediaPlayer4;
display.CurrentMediaPlayer.Control.Play();
});
btnStop.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Stop();
});
btnPause.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Pause();
});
btnPlay.onClick.AddListener(() =>
{
display.CurrentMediaPlayer.Control.Play();
});
}
}
播放事件
using System.Collections;
using System.Collections.Generic;
using RenderHeads.Media.AVProVideo;
using UnityEngine;
using UnityEngine.UI;
public class clAVProTest : MonoBehaviour
{
public DisplayUGUI display;//播放器
public MediaPlayer mediaPlayer1;
void Start()
{
display.CurrentMediaPlayer = mediaPlayer1;
mediaPlayer1.Events.AddListener(OnMediaPlayerEvent);
mediaPlayer1.Play();
}
/// <summary>
/// AVPro事件管理
/// </summary>
/// <param name="mp"></param>
/// <param name="et"></param>
/// <param name="errorCode"></param>
void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
{
switch (et)
{
case MediaPlayerEvent.EventType.Started:
Debug.Log("StartEvent");
OnMediaPlayerStarted(mp);
break;
case MediaPlayerEvent.EventType.FinishedPlaying:
Debug.Log("FinishEvent");
OnMediaPlayerFinished(mp);
break;
}
}
/// <summary>
/// 开始事件触发
/// </summary>
/// <param name="mp"></param>
void OnMediaPlayerStarted(MediaPlayer mp)
{
Debug.Log("视频开始播放。");
}
/// <summary>
/// 结束事件触发
/// </summary>
/// <param name="mp"></param>
void OnMediaPlayerFinished(MediaPlayer mp)
{
Debug.Log("视频播放完毕。");
}
}
其他事件
- [跳转到视频的某一秒钟]
- [为视频的某一秒添加事件]
- [添加获取视频的总时长]
其他
问题1
使用Unity的VideoPlayer 在Win 7 SP1的上可能不能播放视频,使用AVPro可以解决。