赞
踩
推荐阅读
Avpro Video是一款由RenderHeads出品的可以在Unity上安装使用的万能多平台视频播放插件,Avpro Video支持Windows,linux,ios,mac,Android等多平台万能播放。不仅可以实现基础的播放功能,还能实现进度条拖放和速率调整,播放4K视频,360度全景视频等,并对不同的平台进行了优化。
http://www.onlinedown.net/soft/987730.htm
https://blog.csdn.net/yiwei151/article/details/78415771
https://blog.csdn.net/dark00800/article/details/56015917
CSDN下载链接
https://download.csdn.net/download/q764424567/12882092
GitHub下载链接
https://github.com/764424567/Unity-plugin/blob/master/AVPro%20Video.unitypackage
基于UGUI的视频播放功能
将下载的unitypackage导入工程,可以看到以下几个文件夹
创建Media Player对象,在Hierarchy视图右击或者选择菜单栏的GameObject菜单,然后选择AVPro Video->Media Player
Media Player对象包括基础设置
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在说明文档中都有。
文档下载链接:
https://github.com/764424567/Unity-plugin/blob/master/AVProVideo-UserManual.pdf
下面就是文档的内容,因为是全英文的,就给翻译了一下
内容
AVPro视频是来自渲染头的最新视频插件,它之前开发过。AVPro QuickTime和AVPro Windows媒体插件用于Unity。在新一代的ugins中,我们的目标是创建一个易于使用的跨平台视频播放系统,该系统使用每个平台的特性。
我们提供了一个无限试用版的AVPro视频,可以从我们的网站http://renderheads.com/product/av和亲视频中下载。试用版没有遗漏的特性或时间限制,但它确实对渲染的输出应用了水印。水印确实有很小的性能影响,这在高分辨率的视频中是非常明显的。在Windows中,如果在没有显示水印的情况下使用GPU解码路径,那么每隔几秒,视频的大小就会缩小。
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
1.打开一个新的Unity会话(清除任何锁定的插件文件)
2.将unitypackage文件导入到Unity项目中。如果提示升级一些脚本,请单击Yes。
- 这个插件需要API的等级最低16
- 使用的是MediaPlayer API
- 如果你想支持流媒体,别忘了设置“互联网接入”选项。播放器设置“需要”
- 对于渲染,我们支持OpenGL ES 2.0和OpenGL ES 3.0
- 支持多线程渲染
如果你使用的是这个插件的试用版,你会看到一个水印在视频中显示出来。水印的形式是“渲染头”的标志,它在屏幕上显示,或者是在屏幕上移动的厚水平条。AVPro视频的完整版本在任何平台上都没有水印。
如果你使用一个特定于平台的软件包(比如iOS的AVPro视频,或者Windows的AVPro视频),那么你将不会看到你购买的平台上的水印,但是你会看到其他平台上的水印。例如,如果你为iOS购买了AVPro视频,那么你仍然可以看到Unity编辑器中的水印,因为这是在windows/os X上运行的,但是当你部署到iOS设备时播放的视频将是无水的。
如果您正在从试用版升级,请确保删除旧/资产/plugins文件夹,因为它包含试用插件,并且可能会发生冲突。您可能需要先关闭Unity,然后手动删除文件,然后重新启动Unity并重新导入软件包(因为Unity在加载后就会锁定本地插件文件)。
您可以通过在场景中添加一个MediaPlayer组件来检查您安装了哪个版本,并单击该组件的检查员的“关于”按钮。版本号显示在这个框中。
如果你已经安装了iOS包,那么它也会包含所有其他的插件。平台,但启用了水印。这意味着,如果您试图安装另一个AVPro包,它可能不会正确地覆盖插件。下面是如何使用iOS和Android包来解决这个问题:
1.开始一个Unity新项目
2.导入iOS的包
3.删除Plugins/Android 文件夹
a.如果你已经安装了其他的Android插件,那么你就不能删除整个文件夹,并且必须特别删除AVPro文件。查看一下AVPro原生nlugin的“helow”列表
4.导入Android包
类似操作适用于其他包
本地的pluain文件列表:
视频文件几乎可以在任何位置播放,但是我们建议在Unity项目中放置视频文件,因为这是最容易开始的文件夹。StreamingAssets是一个特殊的文件夹,在没有处理的情况下,统一复制到构建。在其他地方复制的文件将需要手动复制到构建位置。MediaPlayer组件允许您浏览视频文件,并将它们与父文件夹相关联:
视频定位字段指定视频文件的主位置,而视频路径。•菲尔德指定在何处查找与位置有关的文件。
例如,如果您的文件存储在“Assets/StreamingAssets/Video.mp4”中你会设置。定位到“相对于流媒体资产文件夹”,并将视频路径设置为“vedio.mp4”
子文件夹也支持一个视频“Assets/ StreamingAssets / myfolder /video.mp4“会有它的视频路径设置。“myfolder / video.mp4”。
您还可以指定相对于其他位置的绝对路径、url或路径:
这是视频文件的最佳和最常见的位置。这个文件夹位于。“Assets/StreamingAssets/”,如果它不存在,你必须创建它。复制到这个文件夹的文件不会被Unity导入或处理,但是它们会自动复制到构建中。
。在这里,您可以为视频文件指定一个完整的URL或绝对路径。一个URL可以是“http://myserver.com/myvideo.mp4”或“rtsp://myserver.com:8080/mystream.rtsp”,这取决于所使用的平台支持和流媒体服务。
一条绝对路径看起来是这样的:
……使用绝对路径对于测试来说是很有用的,但是在部署到其他没有相同文件结构的机器时是没有用的。
项目文件夹是您的Unity项目的文件夹,所以包含资产的文件夹。图书馆和项目设置子文件夹。当vou不想在Unity资产文件夹中包含视频文件时,指定与项目文件夹相关的文件是很有用的,但是希望将它们保存在项目文件夹结构中。经常做一个叫做“视频”的子文件夹是有用的。在这个位置上的一个可能的问题是,当makina构建vour视频文件不会自动复制到构建目的地时,所以它们需要手动复制。
对于构建这个文件夹应该位于:
数据文件夹是由Unity指定的:
http://docs.unity3d.com/ScriptReferencelApplication-dataPath.html
把视频文件直接放到这个文件夹里是没有用的,因为它们会被统一处理成电影材质,并且会使你的项目规模膨胀。如果你想停止Unity的处理,视频文件只是简单地将扩展名重命名为Unity不理解的东西,所以“myvideo”。mp4“可以重命名为myvideo.mp4.bin”。数据文件夹中的文件(编辑器中的资产文件夹)不会自动复制到构建中,因此您必须手动复制它们。
持久数据文件夹是Unity设置的
http://docs.unity3d.com/ScriptReference/Application-persistenDataPath.html
AVPro视频支持多个基于平台的流媒体协议:
在为流媒体播放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月)。
这个平台支持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也可以。
要求将internet访问设置(在播放器设置中)设置为Required
我们发现这些流方便测试(不保证他们仍然工作):
到目前为止,我们已经在下面平台测试AVPro视频:
VR仍然是非常新的,你应该总是检查最新的建议安装步骤时,创建你的项目。我们在网上找到很多过时的安装说明。AVPro视频支持4K MP4播放,创造360度体验。立体声4K视频在顶部底部和并排的格式都是alsol支持的有关实现VR高分辨率视频回放的提示,请参阅FAQ。降低编码视频的复杂性将使解码引擎更容易,并可能导致更高的帧率和更低的CPU/GPU使用率。可能的编码调整包括:
AVPro视频支持上下左右格式的立体视频。
你可以在媒体属性面板中设置视频的立体包装格式:
现在,当使用在一个网格上的球内着色器,它会自动映射正确的par的视频到每个前夕。查看“Demo_360SphereVideo”场景,了解它是如何工作的。
包含的着色器“InsideSphere.shader“允许你轻松设置什么格式的视频是通过一个下拉式菜单选择的材料:
选择“立体声调试着色”来着色左边和右边不同的颜色,这样你可以确保立体声工作注意:在使用Unity 5.3或更低版本或Unity 5.4或更高版本时,在不启用单通道VR选项的情况下,一定要在场景中添加“UpdateStereoMaterial”组件脚本。
通常立体VR需要2个摄像头,每个摄像头设置一个不同的图层蒙版,2个球体也设置一个不同的蒙版。AVPro视频不需要这个,只需要使用普通的单摄像头和单球体。
一些VR系统,如Oculus Rift,有自己的音频输出设备,AVPro视频有一个选项“强制音频输出设备”的Windows(目前只在DirectShow播放模式),允许你指定这个音频设备的名称:
闹剧音频输出i要使用的设备名称可以从VR API中检索或硬编码。Oculus Rift的名字通常是“Rift音频”,而HTC Vive则是“HTC Vive USB音频”。
Hap编解码器是本地支持的,对于超高分辨率的视频,它的CPU使用率极低。AVI和MOV容器都可以使用。Hap仅支持Windows和Mac OS X平台。
目前,只有Hap和Hap Alpha变种的Hap被支持用于带有HapQ的Windows,而未来带有Alpha的HapQ也将得到支持。Hap目前要求选择“Force DirectShow”选项:
支持Hap, Hap Alpha和Hap Q
没有多少视频编解码器支持透明/ alpha通道。AVPro视频部分平台支持的格式为:
AVPro视频包括许多示例预制块,您可以使用它们轻松地将视频回放添加到您的项目中。
以下步骤将创建一个应用程序,播放全屏视频:
4. 在您的项目窗口中创建一个名为StreamingAssets的文件夹,并将您的文件(比如MP4文件)复制到该文件夹中
5. 在MediaPlayer组件的视频路径字段中输入文件名(包括扩展名)
6. 构建和部署您的应用程序,视频将displaved fullscreer6Displayl MGUI组件脚本只是用于显示视频的组件之一。
Displayl MGUI组件脚本只是用于显示视频的组件之一。它使用传统的Unity IMGUI系统,它总是呈现在所有其他东西之上。如果你不想让你的视频在顶部,尝试使用DisplayBackground或DisplayUGUI组件来获得更多的控制。
AVPro视频包括许多易于使用的脚本组件,你可以添加到你的场景。在这个例子中,我们展示了如何使用组件在材质上播放视频,材质被应用到场景中的3D模型上。
最简单的入门方法是查看包含的演示,并查看使用了哪些脚本组件。对于视频回放,你需要在你的场景中做三件事:
AVPro视频被设计成即使在没有本地支持的平台上也能正常工作,而不是显示实际的视频。所有的视频控制仍然可以工作。例如,如果您在Linux中运行编辑器,则虚拟视频播放器将出现在编辑器中,而真正的视频将在部署到受支持的平台时出现。如果部署到不受支持的平台,如三星电视,还会看到虚拟视频播放器。该代码易于扩展,可以为任何不受支持的平台添加自定义视频播放器。
为了使这个资产易于使用,包含了许多componentb。组件位于AVProVideo/Scripts/ components文件夹中,也可以从组件菜单中添加:
这是播放媒体的核心组件。此组件只处理媒体的加载和回放,而不处理如何显示它。使用显示脚本组件控制视频的显示方式和位置。字段是:
这是显示视频最基本的组件。它使用传统的Unity IMGUI系统在屏幕上显示视频。IMGUI总是被渲染在场景中其他所有东西的上面,所以如果你需要你的视频被渲染在3D空间或作为uGUl系统的一部分,最好使用其他组件。字段:
这个组件是用来显示一个视频使用Unity的uGUI系统。字段:
该组件将媒体播放器组件生成的纹理分配到3D网格上的材质纹理槽中。这对于在3D网格上播放视频非常有用。字段:
所有脚本都使用名称空间RenderHeads.Media。所以一定要添加“使用RenderHeads.Media”。AVProVideo”到源文件的顶部。
大多数脚本很可能以MediaPlayer .cs脚本为中心。这个脚本处理视频的浏览、回放和更新。该脚本公开了许多与不同用例相关的接口,可以在interface .cs中找到它们
MediaPlayer公开3个主要接口:
MediaPlayer mp;
mp.Info.GetVideolidth ();
MediaPlayer mp;
mp.Control.Pause ();
MediaPlayer mp;
videoTexture = mp.TextureProducer.GetTexture();
MediaPlayer脚本也有许多控制媒体加载的方法:
MediaPlayer目前有以下事件:
脚本例子:
//Addtheeventlistener(canalsodothisviatheeditorGUI) MediaPlayermp; mp.Events.AddListener(OnVideoEvent); //Callbackfunctiontohandleevents publicvoidOnVideoEvent(MediaPlayermp,MediaPlayerEvent.EventTypeet) { switch(et) { caseMediaPlayerEvent.EventType.ReadyToPlay: mp.Control.Play(); break; caseMediaPlayerEvent.EventType.FirstFrameReady: Debug.Log("Firstframeready"); break; caseMediaPlayerEvent.EventType.FinishedPlaying: mp.Control.Rewind(); break; } Debug.Log("Event:"+et.ToString()); }
360Spherevideo.prefab
预置的视频播放器和映射到一个球体。适用于360度等角度视频的回放预制件包含一个视频播放器和一个四轴模型与一个特殊的背景材料应用。
BackgroundVideo.prefab
这种材料使四方得到绘制之前的一切,所以它出现在背景。
FullscreenVideo.prefab
预置控制一个视频播放器和IMGUI显示组件非常简单的基本视频playback创建
组件
AVPro视频desiąned主要与使用提供的组件拖放到但总有时候的脚本是必要的。资产包括样本场景,给出了一些例子如何使用脚本控制视频回放,应用视频纹理到材料等,这是有用的学习。完整的课程参考资料可在此下载:
http://downloads.renderheads.com/docs/AVProVideoClassReference/
MediaPlayer class
MediaPlayer类是视频播放的主类,是指定和控制视频文件的地方。这个类主要通过Unity Inspector Ul来控制,并通过它所公开的接口属性来编写脚本。
属性
方法
所有这些方法都使用上面公开的接口,都是方便的快捷方式
IMedialnfo接口
该接口用于查询视频的属性
方法
IMediaControl接口
方法
这个接口用于控制视频的加载和回放
IMediaProducer接口
方法
一般来说,支持的最常见格式是带有H.264编码的MP4文件,用于视频和AAC编码的音频。所有平台都支持这种格式,但不一定支持所有比特率和配置文件。
容器支持:
音频编解码器支持:
视频编解码器支持:
VP8NP9 Windows媒体基金会的编解码器可在以下网址下载http://www.webmproject.oraliel
显然苹果很快就会发布支持
**要求勾选“Force DirectShow”选项
带有“?”的细胞是我们不确定的细胞。我们将做更多的测试,并继续更新这个表。有关哪种编解码器和哪种编码类型最好的详细信息,请参阅下面的每个平台详细信息。
Android支持多种媒体格式。要查看完整的列表,请查看以下Android
文档:http://developer.android.com/intl/ko/quide/appendix/media-formats.html
下表显示了一些Android设备的功能,可以作为查看支持的视频格式的指南。
iOS支持多种媒体格式,包括H.264。要查看完整的列表,请点击这里的ios
文档:https://developer.apple.com/librarv/ios/documentation/Miscellaneous/Conceptual/iPhoneQs TechOverview /MediaLayer/ MediaLaver.html
下表显示了一些iOS设备的功能,可以作为查看支持的视频格式的指南
在OS X中,支持ProRes 422和ProRes 4444
OS X及以上,支持以下附加格式:
/
未压缩的R10k
未压缩的y210
未压缩的2 yuy
支持的格式的完整列表可以在这里找到:
https://msdn.microsoft.com/enus/library/windows/desktop/dd757927(v=vs.85).aspx https://msdn.microsoft.com/enus/windows/uwp/audiovideocamera/supportedcodecs
解码器支持高达配置文件L5.1:
https://msdn.microsoft.com/enus/library/windows/desktop/dd797815(v=vs.85).aspx
Windows 10 添加以下格式
H.265 /HEVC
MKV
FLAC
这个平台还不支持,但该平台支持的媒体的详细信息可以点击这里:
https://msdn.microsoft.com/library/windows/apps/ff462087(v=vs.105).aspx https://msdn.microsoft.com/enus/windows/uwp/audiovideocamera/supportedcodecs
如果您需要支持或对该产品有任何意见/建议,请与我们联系。
电子邮件:unitysupport@renderheads.com
网站:http://renderheads.com/product/avpro-videa/
Unity 论坛:http://forum.unity3d.com/threads/released-avpro-video-complete-video-playback-solution.3856111
如果你正在报告一个错误,请包括任何相关的文件和细节,以便我们可以尽快修复问题。
必要的细节:
更好的是,寄给我们一个完整的或缩小的副本,您的统一项目
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。