Unity3d 视频播放插件AVPro Video的研究

参考资料

http://www.onlinedown.net/soft/987730.htm
https://blog.csdn.net/yiwei151/article/details/78415771
https://blog.csdn.net/dark00800/article/details/56015917

简介

Avpro Video是一款由RenderHeads出品的可以在Unity上安装使用的万能多平台视频播放插件,Avpro Video支持Windows,linux,ios,mac,Android等多平台万能播放。不仅可以实现基础的播放功能,还能实现进度条拖放和速率调整,播放4K视频,360度全景视频等,并对不同的平台进行了优化。
这里写图片描述

下载链接

https://pan.baidu.com/s/1Q8fKDZOHbv7dIwZzMtIpMA 密码:myhv
http://www.onlinedown.net/soft/987730.htm

基于UGUI的视频播放功能

  1. 将下载的unitypackage导入工程,可以看到以下几个文件夹
    这里写图片描述

  2. 创建Media Player对象,在Hierarchy视图右击或者选择菜单栏的GameObject菜单,然后选择AVPro Video->Media Player
    这里写图片描述
    这里写图片描述
    Media Player对象包括基础设置

    • Media Properties(视频的图像和音频设置)
    • Global Settings(全局设置)
    • Preview(预览,只在Play时有效)
    • Events(回调事件)
    • Platform(多平台重写)
    • About(插件信息)
      其中我们一般需要进行设置的只有基础设置和Events。

这里写图片描述

  • Absolute Path Or URL :绝对路径或者URL,path写服务器的路径,但是记得写视频的后缀名,这个时候就可以在线播放视频了
  • Relative To Project Folder:相对于项目文件夹的路径,这个因为打包之后项目的相对路径就变了,需要不同平台,设置不同参数
  • Relative To StreamingAssets Folder:这是视频文件的最佳和最常见的位置。这个文件夹位于。“Assets/streamingassets/”,如果它不存在,你必须创建它。复制到这个文件夹的文件不会被Unity导入或处理,但是它们会自动复制到构建中。
  • Relative To Data Folder:数据文件夹是由Unity指定的
  • Relative To Peristent Data Folder:持久数据文件夹由Unity指定

.
3. 设置Medie Player的参数
这里写图片描述
这里写图片描述
- 注意一下的是Video Location这个选项
- 推荐使用StreamingAssets文件夹
- 需要在项目的Assets目录下新建一个StreamingAssets文件夹,然后将视频拖进去,StreamingAssets中的文件不会被打包到程序资源包中,而是作为一个独立的目录自动生成在输出的程序目录的Data目录下
- Recent选项可以快速选择之前选择过的文件
- Browse选项可以快速选择电脑中的文件

4.创建AVPro Video对象,在Hierarchy视图右击或者选择菜单栏的GameObject菜单,然后选择UI->AVPro Video
这里写图片描述
参数这么设置就行
这里写图片描述

OK 视频就可以播放了


如何在手机上在线播放视频

同样的步骤添加Media Player组件之后,设置Media Player组件的参数
这里写图片描述
将VideoLocation改为URL,VideoPath改为你服务器的路径,但记得写视频的后缀。这个时候就可以在PC上播放在线视频了

安卓设置:

当然如果我们想要在安卓上播放的还需要更改一些设置;
这里写图片描述
在这个切换为安卓平台的,同时需要在PlayerSetting中设置一些参数。

因为这个插件支持的最低Level为16,所以需要改为16,同时修改下面的参数
  这里写图片描述
这样我们就可以在安卓上播放在线视频了。


插件的官方文档翻译

将下载的unitypackage导入工程,导入后会看到几个demo和插件的说明文档AVProVideo-UserManual。详细的插件用法包括视频格式的支持和API在说明文档中都有。

下面就是文档的内容,因为是全英文的,就给翻译了一下

内容

  1. 介绍
    1.1 产品特点
    1.2 试用版
    1.3 版权说明
  2. 系统要求
    2.1 平台不支持
  3. 安装
    3.1 平台的说明
    3.2 试用版和水印
    3.3 视频文件位置
    3.4 流文件
    3.5 虚拟现实的说明
    3.6 Hap编解码器的说明
    3.7 幻灯片的说明
  4. 快速入门示例
    4.1 快速启动从Unity开始
    4.2 使用Prefabs快速启动全屏幕视频播放器
    4.3 使用组件快速启动3D网格视频演示
  5. 使用
    5.1 使用指南
    5.2 不受支持的平台
    5.3 组件
           5.3.1 Media Player 组件
           5.3.2 Display IMGUI 组件
           5.3.3 Display uGUI 组件
           5.3.4 Apply To Mesh / Material 组件
    5.4 脚本
           5.4.1 Namespace
           5.4.2 Media Player Scripting
           5.4.3 Events
  6. 资源文件
    6.1 Demos
    6.2 Prefabs
    6.3 Scripts
  7. 支持的媒体格式
    7.1 Android
    7.2 iOS,tvOS, and OS X
    7.3 Windows
  8. 脚本参考
  9. 支持
  10. 关于 RenderHeads Ltd
    附录A - FAQ
    附录B - 版本历史
    附录C - 路线图

1.介绍

AVPro视频是来自渲染头的最新视频插件,它之前开发过。AVPro QuickTime和AVPro Windows媒体插件用于Unity。在新一代的ugins中,我们的目标是创建一个易于使用的跨平台视频播放系统,该系统使用每个平台的特性。

1.1 产品特点

  • Version for iOS,tvOS,OS X,Android,Windows,Windows Phone and UMP
  • One API for video playback on all supported platforms
  • 4K Video support (on supported hardware)
  • VR support (equirectangular hardware)
  • Fast fiexible video playback
  • Unity Pro 4.6.9 and 5.x supproted
  • Free watermaked trial version avaiable(download here)
  • Fast native Direct3D,OpedGL and Metal texture updates
  • Linear and Gamma colour spaces supported
  • Graceful fallback in editor
  • Unity 4.5 uGUI support
  • Easy to use ,drag and drop components
  • Streaming video from URL (when supported by platform)

1.2 试用版

我们提供了一个无限试用版的AVPro视频,可以从我们的网站http://renderheads.com/product/av和亲视频中下载。试用版没有遗漏的特性或时间限制,但它确实对渲染的输出应用了水印。水印确实有很小的性能影响,这在高分辨率的视频中是非常明显的。在Windows中,如果在没有显示水印的情况下使用GPU解码路径,那么每隔几秒,视频的大小就会缩小。

1.3 媒体版权

BigBuckBunny-360p30.mp4-(c)版权2008,Blender基金会

/www.bigbuckbunny.org。

BigBuckBunny_720p30.mp4-(c)版权2008,Blender基金会

/www.bigbuckbunny.org

SampleSphere.mp4-(c)版权Daniel Arnett,

https://vimeo.com/97887646

2.系统要求

  • Unity 5.x or Unity Pro 4.6 and above
  • iOS 8.1 and above
  • tvOS 9.0(Apple TV 4th Gen) and above
  • OS X 10.7 and above,64-bit only
  • Android 4.1 (Jelly Bean ,API level 16) and above(ARM7 and x86)
  • Windows XP and above(32-bit and 64-bit)
  • Windows 8.0 and above(32-bit and 64-bit)
  • Windows Phone UMP 8.1(32-bit and 64-bit)
  • Window Desktop UMP 8.1(32-bit ,64-bit and ARM)
  • Universal Windows Platform 10(32-bit,64-bit and ARM)

2.1不支持的平台

  • WebGL*
  • WebPlayer
  • Linux desktop
  • Game COnsoles(XBox,PS4 etc)

*= 即将来临

3. 安装

1.打开一个新的Unity会话(清除任何锁定的插件文件)
2.将unitypackage文件导入到Unity项目中。如果提示升级一些脚本,请单击Yes。

3.1 平台说明

3.1.1 Android

-  这个插件需要API的等级最低16
-  使用的是MediaPlayer API
-  如果你想支持流媒体,别忘了设置“互联网接入”选项。播放器设置“需要”
-  对于渲染,我们支持OpenGL ES 2.0和OpenGL ES 3.0
-  支持多线程渲染

3.1.2 iOS / tvOS / Mac OS X

  • 在引擎盖下,我们使用的是AVFoundation API
  • 如果您想要支持流媒体,您需要显式地启用HTTP下载。对于iOS来说,这是新版本Unity的一个选项。但是对于Mac OS X和旧版本的Unity,你必须通过编辑plist文件来显式地做到这一点。下面是关于如何做到这一点的注释
  • 对于Mac OS X的渲染我们支持OpenGL Legacy和OpenGL核心
  • 对于iOS和tvOS的渲染我们支持OpenGL ES 2.0,OpenGL es3.0和金属
  • 支持多线程渲染

3.1.3 Windows

  • 在引擎盖下,我们使用媒体基金会和DirectShow APl。内侧Foundation用于Windows 8和其他版本,而DirectShow则用作Windows 7和下面的回退。
  • 对于渲染我们支持Direct3D 9,Direct3D 11和OpenGL Legacy
  • 支持多线程渲染

3.1.4 Windows Store / UMP / Hololens

  • 对于GPU解码,将这一行添加到app.cs:
    m_AppCallbacks.AddCommandLienArg(“-force-d3d11-no-snglethreaded”);

3.2 试用版和水印说明

3.2.1 水印

如果你使用的是这个插件的试用版,你会看到一个水印在视频中显示出来。水印的形式是“渲染头”的标志,它在屏幕上显示,或者是在屏幕上移动的厚水平条。AVPro视频的完整版本在任何平台上都没有水印。
如果你使用一个特定于平台的软件包(比如iOS的AVPro视频,或者Windows的AVPro视频),那么你将不会看到你购买的平台上的水印,但是你会看到其他平台上的水印。例如,如果你为iOS购买了AVPro视频,那么你仍然可以看到Unity编辑器中的水印,因为这是在windows/os X上运行的,但是当你部署到iOS设备时播放的视频将是无水的。

3.2.2 从试用版更新

如果您正在从试用版升级,请确保删除旧/资产/plugins文件夹,因为它包含试用插件,并且可能会发生冲突。您可能需要先关闭Unity,然后手动删除文件,然后重新启动Unity并重新导入软件包(因为Unity在加载后就会锁定本地插件文件)。
您可以通过在场景中添加一个MediaPlayer组件来检查您安装了哪个版本,并单击该组件的检查员的“关于”按钮。版本号显示在这个框中。

3.2.3 安装多个AVPro平台包

如果你已经安装了iOS包,那么它也会包含所有其他的插件。平台,但启用了水印。这意味着,如果您试图安装另一个AVPro包,它可能不会正确地覆盖插件。下面是如何使用iOS和Android包来解决这个问题:

1.开始一个Unity新项目
2.导入iOS的包
3.删除Plugins/Android 文件夹
   a.如果你已经安装了其他的Android插件,那么你就不能删除整个文件夹,并且必须特别删除AVPro文件。查看一下AVPro原生nlugin的“helow”列表
4.导入Android包
 类似操作适用于其他包

本地的pluain文件列表:
- Plugins/Android/AVProVideo.jar
- Plugins/Android/libs/armeabi-v7a/libAVProLocal.so
- Plugins/Android/libs/x86/libAVProLocal.so
- Plugins/AVProVideo.bundle
- Plugins/iOS/libAVProVideoiOs.a
- Plugins/tvOS/libAVProVideotvOS.a
- Plugins/WSA/PhoneSDK81/ARM/AVProVideo.dll
- Plugins/WSA/PhoneSDK81/x86/AVProVideo.dll
- Plugins/WSA/SDK81/ARM/AVProVideo.dll
- Plugins/WSA/SDK81/x86/AVProVideo.dll
- Plugins/WSA/SDK81/x86_64/AVProVideo.dll
- Plugins/WSA/UMP/ARM/AVProVideo.dll
- Plugins/WSA/UMP/x86/AVProVideo.dll
- Plugins/WSA/UMP/x86_64/AVProVideo.dll
- Plugins/x86/AVProVideo.dll
- Plugins/x86_64/AVProVideo.dll

3.3 Video本地文件夹

视频文件几乎可以在任何位置播放,但是我们建议在Unity项目中放置视频文件,因为这是最容易开始的文件夹。StreamingAssets是一个特殊的文件夹,在没有处理的情况下,统一复制到构建。在其他地方复制的文件将需要手动复制到构建位置。MediaPlayer组件允许您浏览视频文件,并将它们与父文件夹相关联:
这里写图片描述
视频定位字段指定视频文件的主位置,而视频路径。•菲尔德指定在何处查找与位置有关的文件。

例如,如果您的文件存储在“Assets/StreamingAssets/Video.mp4”中你会设置。定位到“相对于流媒体资产文件夹”,并将视频路径设置为“vedio.mp4”
子文件夹也支持一个视频“Assets/ StreamingAssets / myfolder /video.mp4“会有它的视频路径设置。“myfolder / video.mp4”。
您还可以指定相对于其他位置的绝对路径、url或路径:

3.3.1 相对于资源文件夹

这是视频文件的最佳和最常见的位置。这个文件夹位于。“Assets/StreamingAssets/”,如果它不存在,你必须创建它。复制到这个文件夹的文件不会被Unity导入或处理,但是它们会自动复制到构建中。

3.3.2 绝对路径或者URL

。在这里,您可以为视频文件指定一个完整的URL或绝对路径。一个URL可以是“http://myserver.com/myvideo.mp4”或“rtsp://myserver.com:8080/mystream.rtsp”,这取决于所使用的平台支持和流媒体服务。

一条绝对路径看起来是这样的:
- C:/MyFolder/AnotherFolder/MyVido.mp4(Windows)
- /Users/Mike/downloads/MyVideo.mp4(Mac/Linus)
- /Storage/SD/Videos/MyVideo.mp4(Android external SDCARD)
- /Storage/emulated/0/MyFolder/MyVideo.mp4(android local file system)

……使用绝对路径对于测试来说是很有用的,但是在部署到其他没有相同文件结构的机器时是没有用的。

3.3.3 相对于项目文件夹

项目文件夹是您的Unity项目的文件夹,所以包含资产的文件夹。图书馆和项目设置子文件夹。当vou不想在Unity资产文件夹中包含视频文件时,指定与项目文件夹相关的文件是很有用的,但是希望将它们保存在项目文件夹结构中。经常做一个叫做“视频”的子文件夹是有用的。在这个位置上的一个可能的问题是,当makina构建vour视频文件不会自动复制到构建目的地时,所以它们需要手动复制。

对于构建这个文件夹应该位于:

  • Windows - 在与你的EXE相同的级别
  • Mac -与应用程序包中的内容文件夹相同
  • iOS 和AppName的级别相同。应用/数据文件夹
  • Android - 除非你手动构建APK,否则无法访问APK

3.3.4 相对于资源文件夹

数据文件夹是由Unity指定的:

http://docs.unity3d.com/ScriptReferencelApplication-dataPath.html

把视频文件直接放到这个文件夹里是没有用的,因为它们会被统一处理成电影材质,并且会使你的项目规模膨胀。如果你想停止Unity的处理,视频文件只是简单地将扩展名重命名为Unity不理解的东西,所以“myvideo”。mp4“可以重命名为myvideo.mp4.bin”。数据文件夹中的文件(编辑器中的资产文件夹)不会自动复制到构建中,因此您必须手动复制它们。

3.3.5 相对于持续化数据的文件夹

持久数据文件夹是Unity设置的
http://docs.unity3d.com/ScriptReference/Application-persistenDataPath.html

3.4 流文件说明

AVPro视频支持多个基于平台的流媒体协议:
这里写图片描述

HTTP进步流

在为流媒体播放MP4视频时,确保它们在文件开始时使用视频头数据进行编码。你通常通过选择“快速启动”来做到这一点。QuickTime编码器,或者在FFMPEG中使用“-移动标志快速启动”,其他编码器将有类似的选项。要使用FFMPEG来准备一个MP4,您可以使用以下命令:

ffmped -i %1 -acodec copy -vcodec copy -movflags faststart %1 -streaming.mp4

。如果你是流媒体视频在URL中”mp4”部分特别有用如果你使用HLS流媒体播放从VIMEO作为MP4,你应该注意到你可以替换vith。m3u8“让它变成一个HLS流。这可能是为苹果应用商店开发应用程序,因为你需要认证(截止到2016年4月)。

3.4.1 OS X,iOS and tvOS Streaming

这个平台支持HLS流的流,通常以m3u或m3u8扩展结束。

如果vou有一个HTTPS URL,它应该可以正常工作,因为苹果信任安全连接。

如果你只能使用HTTP那么你的应用就必须有一个特殊的标志来让它使用HTTP

连接(这是苹果的安全问题)。

这个设置在iOS和tvOS的Unity播放器设置中被曝光:

这里写图片描述

该设置也在脚本API中公开:
http://docs.unity3d.com/ScriptReference/PlayerSettings.iOS-allowHTTPDownload.html

如果出于某种原因,你的Unity版本没有公开这一点,那么你将不得不手动添加它。在Unity编辑器中,你需要编辑“Unity.app/content/info”。在您的构建应用程序中,您需要编辑“您的.app/content/info.plist”。这些文件需要添加这些kevs:
NSAppTransportSecurity

NSAllowsArbitraryLoads

你可以在这里找到更多的信息:

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

我们还包括一个名为“PostProcessBuild”的post过程构建脚本。cs”项目•对plist进行编辑并添加该属性。目前,它只在iOS平台上设置,但你也可以在顶部编辑定义,让Mac OS X也可以。

那个pdf说明文档在这里
https://pan.baidu.com/s/12a2KM-SoJB8J3ABVPKWh5g 密码:5x7p

猜你喜欢

转载自blog.csdn.net/q764424567/article/details/80696566