Skip to content

Commit

Permalink
引入 ijkplayer java 源码
Browse files Browse the repository at this point in the history
  • Loading branch information
Doikki committed Apr 20, 2021
1 parent fabe324 commit baf7fb5
Show file tree
Hide file tree
Showing 29 changed files with 4,299 additions and 58 deletions.
1 change: 0 additions & 1 deletion dkplayer-players/ijk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ android {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
compileOnly project(':dkplayer-java')
api "tv.danmaku.ijk.media:ijkplayer-java:$project.ijkPlayerVersion"
}

ext {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;

public class IjkPlayer extends AbstractPlayer {
public class IjkPlayer extends AbstractPlayer implements IMediaPlayer.OnErrorListener,
IMediaPlayer.OnCompletionListener, IMediaPlayer.OnInfoListener,
IMediaPlayer.OnBufferingUpdateListener, IMediaPlayer.OnPreparedListener,
IMediaPlayer.OnVideoSizeChangedListener, IjkMediaPlayer.OnNativeInvokeListener {

protected IjkMediaPlayer mMediaPlayer;
private int mBufferedPercent;
private Context mAppContext;
private final Context mAppContext;

public IjkPlayer(Context context) {
mAppContext = context;
Expand All @@ -35,18 +38,13 @@ public void initPlayer() {
IjkMediaPlayer.native_setLogLevel(VideoViewManager.getConfig().mIsEnableLog ? IjkMediaPlayer.IJK_LOG_INFO : IjkMediaPlayer.IJK_LOG_SILENT);
setOptions();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setOnErrorListener(onErrorListener);
mMediaPlayer.setOnCompletionListener(onCompletionListener);
mMediaPlayer.setOnInfoListener(onInfoListener);
mMediaPlayer.setOnBufferingUpdateListener(onBufferingUpdateListener);
mMediaPlayer.setOnPreparedListener(onPreparedListener);
mMediaPlayer.setOnVideoSizeChangedListener(onVideoSizeChangedListener);
mMediaPlayer.setOnNativeInvokeListener(new IjkMediaPlayer.OnNativeInvokeListener() {
@Override
public boolean onNativeInvoke(int i, Bundle bundle) {
return true;
}
});
mMediaPlayer.setOnErrorListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnInfoListener(this);
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setOnNativeInvokeListener(this);
}


Expand Down Expand Up @@ -124,7 +122,7 @@ public void prepareAsync() {
@Override
public void reset() {
mMediaPlayer.reset();
mMediaPlayer.setOnVideoSizeChangedListener(onVideoSizeChangedListener);
mMediaPlayer.setOnVideoSizeChangedListener(this);
setOptions();
}

Expand Down Expand Up @@ -212,52 +210,44 @@ public long getTcpSpeed() {
return mMediaPlayer.getTcpSpeed();
}

private IMediaPlayer.OnErrorListener onErrorListener = new IMediaPlayer.OnErrorListener() {
@Override
public boolean onError(IMediaPlayer iMediaPlayer, int framework_err, int impl_err) {
mPlayerEventListener.onError();
return true;
}
};
@Override
public boolean onError(IMediaPlayer mp, int what, int extra) {
mPlayerEventListener.onError();
return true;
}

private IMediaPlayer.OnCompletionListener onCompletionListener = new IMediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(IMediaPlayer iMediaPlayer) {
mPlayerEventListener.onCompletion();
}
};
@Override
public void onCompletion(IMediaPlayer mp) {
mPlayerEventListener.onCompletion();
}

private IMediaPlayer.OnInfoListener onInfoListener = new IMediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(IMediaPlayer iMediaPlayer, int what, int extra) {
mPlayerEventListener.onInfo(what, extra);
return true;
}
};
@Override
public boolean onInfo(IMediaPlayer mp, int what, int extra) {
mPlayerEventListener.onInfo(what, extra);
return true;
}

private IMediaPlayer.OnBufferingUpdateListener onBufferingUpdateListener = new IMediaPlayer.OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(IMediaPlayer iMediaPlayer, int percent) {
mBufferedPercent = percent;
}
};
@Override
public void onBufferingUpdate(IMediaPlayer mp, int percent) {
mBufferedPercent = percent;
}

@Override
public void onPrepared(IMediaPlayer mp) {
mPlayerEventListener.onPrepared();
}

private IMediaPlayer.OnPreparedListener onPreparedListener = new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer iMediaPlayer) {
mPlayerEventListener.onPrepared();
}
};

private IMediaPlayer.OnVideoSizeChangedListener onVideoSizeChangedListener = new IMediaPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(IMediaPlayer iMediaPlayer, int i, int i1, int i2, int i3) {
int videoWidth = iMediaPlayer.getVideoWidth();
int videoHeight = iMediaPlayer.getVideoHeight();
if (videoWidth != 0 && videoHeight != 0) {
mPlayerEventListener.onVideoSizeChanged(videoWidth, videoHeight);
}
@Override
public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den) {
int videoWidth = mp.getVideoWidth();
int videoHeight = mp.getVideoHeight();
if (videoWidth != 0 && videoHeight != 0) {
mPlayerEventListener.onVideoSizeChanged(videoWidth, videoHeight);
}
};
}

@Override
public boolean onNativeInvoke(int what, Bundle args) {
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
/*
* Copyright (C) 2013-2014 Bilibili
* Copyright (C) 2013-2014 Zhang Rui <[email protected]>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package tv.danmaku.ijk.media.player;

import tv.danmaku.ijk.media.player.misc.IMediaDataSource;

@SuppressWarnings("WeakerAccess")
public abstract class AbstractMediaPlayer implements IMediaPlayer {
private OnPreparedListener mOnPreparedListener;
private OnCompletionListener mOnCompletionListener;
private OnBufferingUpdateListener mOnBufferingUpdateListener;
private OnSeekCompleteListener mOnSeekCompleteListener;
private OnVideoSizeChangedListener mOnVideoSizeChangedListener;
private OnErrorListener mOnErrorListener;
private OnInfoListener mOnInfoListener;
private OnTimedTextListener mOnTimedTextListener;

public final void setOnPreparedListener(OnPreparedListener listener) {
mOnPreparedListener = listener;
}

public final void setOnCompletionListener(OnCompletionListener listener) {
mOnCompletionListener = listener;
}

public final void setOnBufferingUpdateListener(
OnBufferingUpdateListener listener) {
mOnBufferingUpdateListener = listener;
}

public final void setOnSeekCompleteListener(OnSeekCompleteListener listener) {
mOnSeekCompleteListener = listener;
}

public final void setOnVideoSizeChangedListener(
OnVideoSizeChangedListener listener) {
mOnVideoSizeChangedListener = listener;
}

public final void setOnErrorListener(OnErrorListener listener) {
mOnErrorListener = listener;
}

public final void setOnInfoListener(OnInfoListener listener) {
mOnInfoListener = listener;
}

public final void setOnTimedTextListener(OnTimedTextListener listener) {
mOnTimedTextListener = listener;
}

public void resetListeners() {
mOnPreparedListener = null;
mOnBufferingUpdateListener = null;
mOnCompletionListener = null;
mOnSeekCompleteListener = null;
mOnVideoSizeChangedListener = null;
mOnErrorListener = null;
mOnInfoListener = null;
mOnTimedTextListener = null;
}

protected final void notifyOnPrepared() {
if (mOnPreparedListener != null)
mOnPreparedListener.onPrepared(this);
}

protected final void notifyOnCompletion() {
if (mOnCompletionListener != null)
mOnCompletionListener.onCompletion(this);
}

protected final void notifyOnBufferingUpdate(int percent) {
if (mOnBufferingUpdateListener != null)
mOnBufferingUpdateListener.onBufferingUpdate(this, percent);
}

protected final void notifyOnSeekComplete() {
if (mOnSeekCompleteListener != null)
mOnSeekCompleteListener.onSeekComplete(this);
}

protected final void notifyOnVideoSizeChanged(int width, int height,
int sarNum, int sarDen) {
if (mOnVideoSizeChangedListener != null)
mOnVideoSizeChangedListener.onVideoSizeChanged(this, width, height,
sarNum, sarDen);
}

protected final boolean notifyOnError(int what, int extra) {
return mOnErrorListener != null && mOnErrorListener.onError(this, what, extra);
}

protected final boolean notifyOnInfo(int what, int extra) {
return mOnInfoListener != null && mOnInfoListener.onInfo(this, what, extra);
}

protected final void notifyOnTimedText(IjkTimedText text) {
if (mOnTimedTextListener != null)
mOnTimedTextListener.onTimedText(this, text);
}

public void setDataSource(IMediaDataSource mediaDataSource) {
throw new UnsupportedOperationException();
}
}
Loading

0 comments on commit baf7fb5

Please sign in to comment.