Skip to content

Commit

Permalink
feat use ParsingMedia to manage Player and TextureView
Browse files Browse the repository at this point in the history
  • Loading branch information
CoXier committed Feb 19, 2017
1 parent 3275d63 commit ec7daea
Show file tree
Hide file tree
Showing 27 changed files with 177 additions and 225 deletions.
Expand Up @@ -21,7 +21,7 @@
import android.support.annotation.Nullable;
import android.util.Log;

import com.hustunique.parsingplayer.LogUtil;
import com.hustunique.parsingplayer.util.LogUtil;
import com.hustunique.parsingplayer.parser.entity.VideoInfo;
import com.hustunique.parsingplayer.parser.extractor.BilibiliExtractor;
import com.hustunique.parsingplayer.parser.extractor.Extractor;
Expand Down
Expand Up @@ -23,7 +23,7 @@
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.hustunique.parsingplayer.Util;
import com.hustunique.parsingplayer.util.Util;
import com.hustunique.parsingplayer.parser.entity.Seg;
import com.hustunique.parsingplayer.parser.entity.Stream;
import com.hustunique.parsingplayer.parser.entity.VideoInfo;
Expand Down
Expand Up @@ -27,8 +27,8 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.hustunique.parsingplayer.LogUtil;
import com.hustunique.parsingplayer.Util;
import com.hustunique.parsingplayer.util.LogUtil;
import com.hustunique.parsingplayer.util.Util;
import com.hustunique.parsingplayer.parser.ExtractException;
import com.hustunique.parsingplayer.parser.entity.Seg;
import com.hustunique.parsingplayer.parser.entity.Stream;
Expand Down
Expand Up @@ -30,9 +30,9 @@
import android.view.View;
import android.view.WindowManager;

import com.hustunique.parsingplayer.LogUtil;
import com.hustunique.parsingplayer.util.LogUtil;
import com.hustunique.parsingplayer.R;
import com.hustunique.parsingplayer.player.ParsingVideoView;
import com.hustunique.parsingplayer.player.view.ParsingVideoView;

import tv.danmaku.ijk.media.player.IMediaPlayer;

Expand Down
Expand Up @@ -17,7 +17,7 @@

package com.hustunique.parsingplayer.player.io;

import com.hustunique.parsingplayer.Util;
import com.hustunique.parsingplayer.util.Util;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
Expand Down
Expand Up @@ -15,14 +15,15 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.io;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

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

@Deprecated
public class FileMediaDataSource implements IMediaDataSource {
private RandomAccessFile mFile;
private long mFileSize;
Expand Down
Expand Up @@ -19,7 +19,7 @@

import android.util.Log;

import com.hustunique.parsingplayer.Util;
import com.hustunique.parsingplayer.util.Util;

import java.io.File;
import java.io.FileNotFoundException;
Expand Down
Expand Up @@ -15,7 +15,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.media;

import android.support.annotation.IntDef;

Expand Down
@@ -0,0 +1,69 @@
package com.hustunique.parsingplayer.player.media;

import android.content.Context;
import android.net.Uri;
import android.view.Surface;
import android.view.SurfaceHolder;

import com.hustunique.parsingplayer.player.io.LoadingCallback;
import com.hustunique.parsingplayer.player.view.TextureRenderView;

import java.io.FileDescriptor;
import java.io.IOException;
import java.util.Map;

import tv.danmaku.ijk.media.player.BuildConfig;
import tv.danmaku.ijk.media.player.MediaInfo;
import tv.danmaku.ijk.media.player.misc.IMediaDataSource;
import tv.danmaku.ijk.media.player.misc.ITrackInfo;

/**
* Created by CoXier on 17-2-19.
*/

public class ParsingMedia {

private IParsingPlayer mPlayer;
private TextureRenderView mRenderView;

private static ParsingMedia mManager;

private ParsingMedia(Context context){
mPlayer = createPlayer(context);
}

public static ParsingMedia getInstance(Context context){
if (mManager == null)
mManager = new ParsingMedia(context);
return mManager;
}

public void configurePlayer(IParsingPlayer player){
mPlayer = player;
}

public void configureRenderView(TextureRenderView renderView){
mRenderView = renderView;
}

public IParsingPlayer getPlayer(){
return mPlayer;
}

public TextureRenderView getRenderView(){
return mRenderView;
}

private IParsingPlayer createPlayer(Context context) {
IParsingPlayer iParsingPlayer = new ParsingPlayer(context);
iParsingPlayer.setOnPreparedListener(mPreparedListener);
iParsingPlayer.setOnVideoSizeChangedListener(mSizeChangedListener);
iParsingPlayer.setOnCompletionListener(mCompletionListener);
iParsingPlayer.setOnErrorListener(mErrorListener);
iParsingPlayer.setOnInfoListener(mInfoListener);
iParsingPlayer.setOnBufferingUpdateListener(mBufferingUpdateListener);
iParsingPlayer.setOnSeekCompleteListener(mSeekCompleteListener);
return iParsingPlayer;
}

}
Expand Up @@ -15,7 +15,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.media;

import android.content.Context;
import android.net.Uri;
Expand All @@ -27,7 +27,7 @@
import android.view.SurfaceHolder;

import com.hustunique.parsingplayer.BuildConfig;
import com.hustunique.parsingplayer.Util;
import com.hustunique.parsingplayer.util.Util;
import com.hustunique.parsingplayer.player.io.LoadingCallback;
import com.hustunique.parsingplayer.player.io.ParsingFileManager;

Expand All @@ -53,35 +53,17 @@ public class ParsingPlayer implements IParsingPlayer {
private final IjkMediaPlayer mMediaPlayer;
private final ParsingFileManager mManager;

private static ParsingPlayer mSingleton;



public static ParsingPlayer getInstance(Context context) {
return getInstance(context, new Config());
}

public static ParsingPlayer getInstance(@NonNull Context context, @Nullable Config config) {
if (context == null) throw new IllegalArgumentException("context == null");
if (mSingleton == null) {
synchronized (ParsingPlayer.class) {
if (mSingleton == null) {
mSingleton = new ParsingPlayer(context, config);
}
}
}
return mSingleton;
public ParsingPlayer(Context context) {
this(context, new Config());
}


private ParsingPlayer(Context context, Config config) {
public ParsingPlayer(Context context, Config config) {
mMediaPlayer = createPlayer(config);
mManager = ParsingFileManager.getInstance(Util.getDiskCacheDir(context, CACHE_DIR));
}




public void setOption(@OptionCategory int category, String name, String value) {
if (mMediaPlayer != null) {
mMediaPlayer.setOption(category, name, value);
Expand Down
Expand Up @@ -15,13 +15,14 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.media;

import android.os.AsyncTask;

import com.hustunique.parsingplayer.parser.VideoParser;
import com.hustunique.parsingplayer.parser.entity.VideoInfo;
import com.hustunique.parsingplayer.parser.provider.Quality;
import com.hustunique.parsingplayer.player.view.ParsingVideoView;

/**
* Created by CoXier on 17-2-7.
Expand All @@ -47,7 +48,5 @@ protected void onPostExecute(VideoInfo videoInfo) {
super.onPostExecute(videoInfo);
// videoView will start playing automatically when process prepared
mVideoView.setConcatVideos(videoInfo, mQuality);


}
}
Expand Up @@ -15,7 +15,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.view;

import android.content.Context;
import android.util.AttributeSet;
Expand Down
Expand Up @@ -15,7 +15,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.view;

/**
* Created by JianGuo on 1/20/17.
Expand Down
Expand Up @@ -15,35 +15,46 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.view;

/**
* Created by JianGuo on 1/27/17.
*/

public interface IMediaPlayerControl {
void start();
void pause();
int getDuration();
int getCurrentPosition();
void seekTo(int pos);
void start();

void pause();

int getDuration();

int getCurrentPosition();

void seekTo(int pos);

boolean isPlaying();
int getBufferPercentage();

int getBufferPercentage();

boolean canPause();

boolean canSeekBackward();

boolean canSeekForward();

/**
* As ParsingPlayer animated to parse video url and play real video address,
* the param videoUrl is limited.
*
* @param videoUrl
*/
void play(String videoUrl);

/**
* Get the audio session id for the player used by this VideoView. This can be used to
* apply audio effects to the audio track of a video.
*
* @return The audio session, or 0 if there was an error.
*/
int getAudioSessionId();
int getAudioSessionId();
}
Expand Up @@ -15,7 +15,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.view;

import android.graphics.SurfaceTexture;
import android.support.annotation.NonNull;
Expand Down
Expand Up @@ -15,10 +15,12 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

package com.hustunique.parsingplayer.player;
package com.hustunique.parsingplayer.player.view;

import android.view.View;

import com.hustunique.parsingplayer.player.view.IRenderView;

import java.lang.ref.WeakReference;


Expand Down

0 comments on commit ec7daea

Please sign in to comment.