Beispiel #1
0
        public static int getSelectedTrack(IMediaPlayer mp, int trackType)
        {
            IjkMediaPlayer ijkMediaPlayer = getIjkMediaPlayer(mp);

            if (ijkMediaPlayer == null)
            {
                return(-1);
            }
            return(ijkMediaPlayer.GetSelectedTrack(trackType));
        }
Beispiel #2
0
        public static void deselectTrack(IMediaPlayer mp, int stream)
        {
            IjkMediaPlayer ijkMediaPlayer = getIjkMediaPlayer(mp);

            if (ijkMediaPlayer == null)
            {
                return;
            }
            ijkMediaPlayer.DeselectTrack(stream);
        }
Beispiel #3
0
        public static IjkMediaPlayer getIjkMediaPlayer(IMediaPlayer mp)
        {
            IjkMediaPlayer ijkMediaPlayer = null;

            if (mp == null)
            {
                return(null);
            }
            if (mp is IjkMediaPlayer)
            {
                ijkMediaPlayer = (IjkMediaPlayer)mp;
            }
            else if (mp is MediaPlayerProxy && ((MediaPlayerProxy)mp).InternalMediaPlayer is IjkMediaPlayer)
            {
                ijkMediaPlayer = (IjkMediaPlayer)((MediaPlayerProxy)mp).InternalMediaPlayer;
            }
            return(ijkMediaPlayer);
        }
        IMediaPlayer createPlayer()
        {
            IMediaPlayer   mediaPlayer    = null;
            IjkMediaPlayer ijkMediaPlayer = null;

            ijkMediaPlayer = new IjkMediaPlayer();

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "mediacodec", 0);

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "opensles", 0);

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "overlay-format", IjkMediaPlayer.SdlFccRv32);

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "framedrop", 1);
            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "start-on-prepared", 0);

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryFormat, "http-detect-range-support", 0);

            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "skip_loop_filter", 48);

            mediaPlayer = ijkMediaPlayer;
            return(mediaPlayer);
        }
Beispiel #5
0
        private void OpenVideo()
        {
            if (Uri == null || SurfaceHolder == null)
            {
                return;
            }
            Intent i = new Intent("com.android.music.musicservicecommand");

            i.PutExtra("command", "pause");
            Context.SendBroadcast(i);
            Release(false);
            try
            {
                Duration = -1;
                CurrentBufferPercentage = 0;
                IjkMediaPlayer ijkMediaPlayer = null;
                if (Uri != null)
                {
                    ijkMediaPlayer = new IjkMediaPlayer();
                    ijkMediaPlayer.SetLogEnabled(false);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.FfpPropvDecoderAvcodec, "analyzemaxduration", 100L);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.FfpPropvDecoderAvcodec, "probesize", 10240L);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.FfpPropvDecoderAvcodec, "flush_packets", 1L);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.IjkLogInfo, "packet-buffering", 0L);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.IjkLogInfo, "framedrop", 1L);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "skip_loop_filter", "48");
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "start-on-prepared", 0);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "http-detect-range-support", 0);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "skip_frame", 0);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "max_cached_duration", 3000);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "infbuf", 1);
                    if (Headers != null && Headers.Count > 0)
                    {
                        foreach (var header in Headers)
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryFormat, header.Key, header.Value);
                        }
                    }
                }
                MediaPlayer = ijkMediaPlayer;
                if (MediaPlayer == null)
                {
                    return;
                }
                MediaPlayer.SetOnPreparedListener(this);
                MediaPlayer.SetOnVideoSizeChangedListener(this);
                MediaPlayer.SetOnCompletionListener(this);
                MediaPlayer.SetOnErrorListener(this);
                MediaPlayer.SetOnBufferingUpdateListener(this);
                MediaPlayer.SetOnInfoListener(this);
                MediaPlayer.SetOnSeekCompleteListener(this);
                if (Uri != null)
                {
                    MediaPlayer.SetDataSource(Context, Uri);
                }
                MediaPlayer.SetDisplay(SurfaceHolder);
                MediaPlayer.SetScreenOnWhilePlaying(true);
                MediaPlayer.PrepareAsync();
                CurrentState = STATE_PREPARING;
                AttachMediaController();
            }
            catch (IOException ex)
            {
                DebugLog.E(TAG, "Unable to open content: " + Uri, ex);
                CurrentState = STATE_ERROR;
                TargetState  = STATE_ERROR;
                OnErrorListener.OnError(MediaPlayer, (int)MediaError.Unknown, 0);
            }
            catch (IllegalArgumentException ex)
            {
                DebugLog.E(TAG, "Unable to open content: " + Uri, ex);
                CurrentState = STATE_ERROR;
                TargetState  = STATE_ERROR;
                OnErrorListener.OnError(MediaPlayer, (int)MediaError.Unknown, 0);
            }
        }
Beispiel #6
0
        private void OpenVideo()
        {
            if (mUri == null || mSurfaceHolder == null)
            {
                return;
            }
            Intent i = new Intent("com.android.music.musicservicecommand");

            i.PutExtra("command", "pause");
            mContext.SendBroadcast(i);
            Release(false);
            try
            {
                mDuration = -1;
                mCurrentBufferPercentage = 0;
                // mMediaPlayer = new AndroidMediaPlayer();
                IjkMediaPlayer ijkMediaPlayer = null;
                if (mUri != null)
                {
                    ijkMediaPlayer = new IjkMediaPlayer();
                    ijkMediaPlayer.SetLogEnabled(false);
                    ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "skip_loop_filter", "48");
                }
                mMediaPlayer = ijkMediaPlayer;
                if (mMediaPlayer == null)
                {
                    return;
                }

                mMediaPlayer.SetOnPreparedListener(this);
                mMediaPlayer.SetOnVideoSizeChangedListener(this);
                mMediaPlayer.SetOnCompletionListener(this);
                mMediaPlayer.SetOnErrorListener(this);
                mMediaPlayer.SetOnBufferingUpdateListener(this);
                mMediaPlayer.SetOnInfoListener(this);
                mMediaPlayer.SetOnSeekCompleteListener(this);//;mOnSeekCompleteListener);

                if (mUri != null)
                {
                    mMediaPlayer.SetDataSource(mContext, mUri);
                }
                mMediaPlayer.SetDisplay(mSurfaceHolder);
                mMediaPlayer.SetScreenOnWhilePlaying(true);
                mMediaPlayer.PrepareAsync();
                mCurrentState = STATE_PREPARING;
                AttachMediaController();
            }
            catch (IOException ex)
            {
                DebugLog.E(TAG, "Unable to open content: " + mUri, ex);
                mCurrentState = STATE_ERROR;
                mTargetState  = STATE_ERROR;
                mOnErrorListener.OnError(mMediaPlayer, (int)MediaError.Unknown, 0);
            }
            catch (IllegalArgumentException ex)
            {
                DebugLog.E(TAG, "Unable to open content: " + mUri, ex);
                mCurrentState = STATE_ERROR;
                mTargetState  = STATE_ERROR;
                mOnErrorListener.OnError(mMediaPlayer, (int)MediaError.Unknown, 0);
            }
        }
        private void openVideo()
        {
            if (mUri == null || mSurfaceHolder == null)
            {
                // not ready for playback just yet, will try again later
                return;
            }
            // we shouldn't clear the target state, because somebody might have
            // called start() previously
            release(false);

            AudioManager am = (AudioManager)mAppContext.GetSystemService(Context.AudioService);

            am.RequestAudioFocus(null, Stream.Music, AudioFocus.Gain);

            try
            {
                if (usingAndroidPlayer)
                {
                    mMediaPlayer = new AndroidMediaPlayer();
                }
                else
                {
                    IjkMediaPlayer ijkMediaPlayer = null;
                    if (mUri != null)
                    {
                        ijkMediaPlayer = new IjkMediaPlayer();
                        //ijkMediaPlayer.native_setLogLevel(IjkMediaPlayer.IJK_LOG_DEBUG);

                        if (usingMediaCodec)
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "mediacodec", 1);
                            if (usingMediaCodecAutoRotate)
                            {
                                ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "mediacodec-auto-rotate", 1);
                            }
                            else
                            {
                                ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "mediacodec-auto-rotate", 0);
                            }
                        }
                        else
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "mediacodec", 0);
                        }

                        if (usingOpenSLES)
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "opensles", 1);
                        }
                        else
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "opensles", 0);
                        }

                        if (TextUtils.IsEmpty(pixelFormat))
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "overlay-format", IjkMediaPlayer.SdlFccRv32);
                        }
                        else
                        {
                            ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "overlay-format", pixelFormat);
                        }
                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "framedrop", 1);
                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryPlayer, "start-on-prepared", 0);

                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryFormat, "http-detect-range-support", 0);
                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryFormat, "timeout", 10000000);
                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryFormat, "reconnect", 1);

                        ijkMediaPlayer.SetOption(IjkMediaPlayer.OptCategoryCodec, "skip_loop_filter", 48);
                    }
                    mMediaPlayer = ijkMediaPlayer;
                }

                if (enableBackgroundPlay)
                {
                    mMediaPlayer = new TextureMediaPlayer(mMediaPlayer);
                }

                // TODO: create SubtitleController in MediaPlayer, but we need
                // a context for the subtitle renderers
                //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
                //ORIGINAL LINE: final android.content.Context context = getContext();
                Context context = Context;
                // REMOVED: SubtitleController

                // REMOVED: mAudioSession
                mMediaPlayer.SetOnPreparedListener(mPreparedListener);
                mMediaPlayer.SetOnVideoSizeChangedListener(mSizeChangedListener);
                mMediaPlayer.SetOnCompletionListener(mCompletionListener);
                mMediaPlayer.SetOnErrorListener(mErrorListener);
                mMediaPlayer.SetOnInfoListener(mInfoListener);
                mMediaPlayer.SetOnBufferingUpdateListener(mBufferingUpdateListener);
                mCurrentBufferPercentage = 0;
                if (Build.VERSION.SdkInt > Build.VERSION_CODES.IceCreamSandwich)
                {
                    mMediaPlayer.SetDataSource(mAppContext, mUri, mHeaders);
                }
                else
                {
                    mMediaPlayer.DataSource = mUri.ToString();
                }
                bindSurfaceHolder(mMediaPlayer, mSurfaceHolder);
                mMediaPlayer.SetAudioStreamType((int)Stream.Music);
                mMediaPlayer.SetScreenOnWhilePlaying(true);
                mMediaPlayer.PrepareAsync();

                // REMOVED: mPendingSubtitleTracks

                // we don't set the target state here either, but preserve the
                // target state that was there before.
                mCurrentState = STATE_PREPARING;
                attachMediaController();
            }
            catch (Java.IO.IOException ex)
            {
                Log.Warn(TAG, "Unable to open content: " + mUri, ex);
                mCurrentState = STATE_ERROR;
                mTargetState  = STATE_ERROR;
                mErrorListener.OnError(mMediaPlayer, (int)MediaError.Unknown, 0);
                return;
            }
            catch (System.ArgumentException ex)
            {
                Log.Warn(TAG, "Unable to open content: " + mUri, ex);
                mCurrentState = STATE_ERROR;
                mTargetState  = STATE_ERROR;
                mErrorListener.OnError(mMediaPlayer, (int)MediaError.Unknown, 0);
                return;
            }
            finally
            {
                // REMOVED: mPendingSubtitleTracks.clear();
            }
        }