public WrapperAndroid(PlayerOptionsAndroid options) { _nativeIndex = UMPNativeInit(); AndroidJavaObject player = null; if (options.PlayerType == PlayerOptionsAndroid.PlayerTypes.Native) { player = new AndroidJavaObject(CLASS_PATH_NATIVE, new object[0]); } else if (options.PlayerType == PlayerOptionsAndroid.PlayerTypes.LibVLC) { player = new AndroidJavaObject(CLASS_PATH_LIBVLC, new object[0]); _playerExpanded = new ExpandedAndroidLibVLC(player); } else if (options.PlayerType == PlayerOptionsAndroid.PlayerTypes.Exo) { player = new AndroidJavaObject(CLASS_PATH_EXO, new object[0]); } var arg = new object[3]; arg[0] = _nativeIndex; arg[1] = player; arg[2] = options.GetOptions('\n'); _coreObj = new AndroidJavaObject(CLASS_PATH_CORE, arg); }
#pragma warning restore 0414 private void Awake() { #if UNITY_EDITOR #if UNITY_4 || UNITY_5 || UNITY_2017_1 EditorApplication.playmodeStateChanged += HandleOnPlayModeChanged; #else EditorApplication.playModeStateChanged += HandleOnPlayModeChanged; #endif #endif if (UMPSettings.GetSettings().UseAudioSource&& (_desktopAudioOutputs == null || _desktopAudioOutputs.Length <= 0)) { var audioOutput = gameObject.AddComponent <UMPAudioOutput>(); _desktopAudioOutputs = new UMPAudioOutput[] { audioOutput }; } PlayerOptions options = new PlayerOptions(null); switch (UMPSettings.SupportedPlatform) { case UMPSettings.Platforms.Win: case UMPSettings.Platforms.Mac: case UMPSettings.Platforms.Linux: var standaloneOptions = new PlayerOptionsStandalone(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, AudioOutputs = _desktopAudioOutputs, //DirectAudioDevice = "Digital Audio", HardwareDecoding = _desktopHardwareDecoding, FlipVertically = _desktopFlipVertically, VideoBufferSize = _desktopVideoBufferSize, UseTCP = _desktopRtspOverTcp, FileCaching = _desktopFileCaching, LiveCaching = _desktopLiveCaching, DiskCaching = _desktopDiskCaching, NetworkCaching = _desktopNetworkCaching }; if (_desktopOutputToFile) { standaloneOptions.RedirectToFile(_desktopDisplayOutput, _desktopOutputFilePath); } standaloneOptions.SetLogDetail(_logDetail, UnityConsoleLogging); options = standaloneOptions; break; case UMPSettings.Platforms.Android: var androidOptions = new PlayerOptionsAndroid(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, PlayerType = _androidPlayerType, HardwareAcceleration = _androidHardwareAcceleration, OpenGLDecoding = _androidOpenGLDecoding, VideoChroma = _androidVideoChroma, PlayInBackground = _androidPlayInBackground, UseTCP = _androidRtspOverTcp, NetworkCaching = _androidNetworkCaching }; options = androidOptions; if (_exportedHandlerEnum == null) { _exportedHandlerEnum = AndroidExpoterdHandler(); StartCoroutine(_exportedHandlerEnum); } break; case UMPSettings.Platforms.iOS: var iphoneOptions = new PlayerOptionsIPhone(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, PlayerType = _iphonePlayerType, FlipVertically = _iphoneFlipVertically, VideoToolbox = _iphoneVideoToolbox, VideoToolboxFrameWidth = _iphoneVideoToolboxMaxFrameWidth, VideoToolboxAsync = _iphoneVideoToolboxAsync, VideoToolboxWaitAsync = _iphoneVideoToolboxWaitAsync, PlayInBackground = _iphonePlayInBackground, UseTCP = _iphoneRtspOverTcp, PacketBuffering = _iphonePacketBuffering, MaxBufferSize = _iphoneMaxBufferSize, MinFrames = _iphoneMinFrames, Infbuf = _iphoneInfbuf, Framedrop = _iphoneFramedrop, MaxFps = _iphoneMaxFps }; options = iphoneOptions; break; } _mediaPlayer = new MediaPlayer(this, _renderingObjects, options); // Create scpecial parser to add possibiity of get video link from different video hosting servies (like youtube) _videoHostingParser = new VideoHostingParser(this); // Attach scecial listeners to MediaPlayer instance AddListeners(); // Create additional media player for add smooth loop possibility if (_loopSmooth) { _mediaPlayerLoop = new MediaPlayer(this, _mediaPlayer); _mediaPlayerLoop.VideoOutputObjects = null; _mediaPlayerLoop.EventManager.RemoveAllEvents(); } }
#pragma warning restore 0414 private void Awake() { #if UNITY_EDITOR EditorApplication.playmodeStateChanged += HandleOnPlayModeChanged; #endif if (UMPSettings.Instance.UseAudioSource && (_audioSourcesDesktop == null || _audioSourcesDesktop.Length <= 0)) { var audioOutput = gameObject.AddComponent <AudioSource>(); _audioSourcesDesktop = new AudioSource[] { audioOutput }; } PlayerOptions options = new PlayerOptions(null); switch (UMPSettings.SupportedPlatform) { case UMPSettings.Platforms.Win: case UMPSettings.Platforms.Mac: case UMPSettings.Platforms.Linux: if (UMPSettings.EditorBitMode == UMPSettings.BitModes.x86 && _hardwareDecodingDesktop == PlayerOptions.State.Default) { _hardwareDecodingDesktop = PlayerOptions.State.Enable; } var standaloneOptions = new PlayerOptionsStandalone(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, AudioOutputSources = _audioSourcesDesktop, HardwareDecoding = _hardwareDecodingDesktop, FlipVertically = _flipVerticallyDesktop, UseTCP = _rtspOverTcpDesktop, FileCaching = _fileCachingDesktop, LiveCaching = _liveCachingDesktop, DiskCaching = _diskCachingDesktop, NetworkCaching = _networkCachingDesktop }; if (_outputToFileDesktop) { standaloneOptions.RedirectToFile(_displayOutputDesktop, _outputFilePathDesktop); } standaloneOptions.SetLogDetail(_logDetail, UnityConsoleLogging); options = standaloneOptions; break; case UMPSettings.Platforms.Android: var androidOptions = new PlayerOptionsAndroid(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, HardwareDecoding = _hardwareDecodingAndroid, PlayInBackground = _playInBackgroundAndroid, UseTCP = _rtspOverTcpAndroid, FileCaching = _fileCachingAndroid, LiveCaching = _liveCachingAndroid, DiscCaching = _diskCachingAndroid, NetworkCaching = _networkCachingAndroid }; options = androidOptions; break; case UMPSettings.Platforms.iOS: var iphoneOptions = new PlayerOptionsIPhone(null) { FixedVideoSize = _useFixedSize ? new Vector2(_fixedVideoWidth, _fixedVideoHeight) : Vector2.zero, VideoToolbox = _videoToolboxIPhone, VideoToolboxFrameWidth = _videoToolboxMaxFrameWidthIPhone, VideoToolboxAsync = _videoToolboxAsyncIPhone, VideoToolboxWaitAsync = _videoToolboxWaitAsyncIPhone, PlayInBackground = _playInBackgroundIPhone, UseTCP = _rtspOverTcpIPhone, PacketBuffering = _packetBufferingIPhone, MaxBufferSize = _maxBufferSizeIPhone, MinFrames = _minFramesIPhone, Infbuf = _infbufIPhone, Framedrop = _framedropIPhone, MaxFps = _maxFpsIPhone }; options = iphoneOptions; break; } _mediaPlayer = new MediaPlayer(this, _renderingObjects, options); if (_cachedVideoPaths == null) { _cachedVideoPaths = new Dictionary <string, string>(); } // Create scpecial parser to add possibiity of get video link from different video hosting servies (like youtube) _videoHostingParser = new VideoHostingParser(this); // Attach scecial listeners to MediaPlayer instance AddListeners(); // Create additional media player for add smooth loop possibility if (_loopSmooth) { _mediaPlayerLoop = new MediaPlayer(this, _mediaPlayer); _mediaPlayerLoop.VideoOutputObjects = null; _mediaPlayerLoop.EventManager.RemoveAllEvents(); } }