iOS / tvOS Platforms
Plugin Specs
- Compatibility
- Unity 2018.x - 2022.x are supported
- iOS 10.0, iPadOS 13.1, tvOS 11.0 and later are supported
- Rendering
- Only the Metal rendering API is supported
- Multi-threaded rendering is supported
- Internals
- Under the hood we’re using Apple's AVFoundation API
Supported Media
See the Supported Media section for more information.
Streaming
See the Streaming section for more information.
Platform-Specific Options
See the Platform-Specific Options section for more information.
Troubleshooting
My app terminates with the following error in the log:
dyld: Library not loaded: @rpath/AVProVideo.framework/AVProVideo
You need to make sure the AVProVideo.framework is set to Embed & Sign in the Frameworks, Libraries and Embedded Content section of the General pane for the Unity-iPhone target of the generated Xcode project as shown below:
You will also need to make sure that AVProVideo.framework is set to Do Not Embed in the Frameworks, Libraries and Embedded Content section of the General pane for the UnityFramework target of the generated Xcode project as shown below:
The PostProcessBuild_iOS script should do this automatically for you. It has been known to fail when:
- building from the command line and not passing the
-buildTarget iOS
option - the path to the framework cannot be identified. This is usually due to either:
- The plugin being moved from its default installed location
Whilst relocating the entire plugin folder is fine, the contents should be left in their respective locations - The plugin was installed into a project with version 1.x already present
Remove version 1.x of the plugin and then reinstall version 2.x
- The plugin being moved from its default installed location
- you are integrating Unity into a native iOS application as outlined here
- add AVProVideo.framework to Frameworks, Libraries and Embedded Content section of the General pane for your application target and make sure it is set to Embed & Sign
- make sure that AVProVideo.framework is set to Do Not Embed in the Frameworks, Libraries and Embedded Content section of the General pane for the UnityFramework target
- building from the command line and not passing the
Streaming
- By default streaming requires that the HTTPS protocol is used. If you want to support streaming via HTTP you need to enable this explicitly. Look for the "Allow downloads over HTTP" option in the "Other Settings" pane of the iOS and tvOS player settings inspector.
Y'CbCr Video Output Mode
Apple platforms have support for Y'CbCr textures which has lower memory overheads and is slightly more performant when compared with standard BGRA32 textures. This option is disabled by default and can be enabled on the MediaPlayer in at Platform Specific section:
The DisplayIMGUI and DisplayUGUI components automatically detect the use of Y'CbCr mode and switch to a suitable shader. ApplyToMesh/ApplyToMaterial also detect this setting and try to set up the shader on the material to the correct settings, however it requires the shader to have the correct properties. The AVPro Video shaders support this, so if you want to use this on a mesh then make sure you’re using these shaders.