提交 a459aa96 编写于 作者: G guoshuyu

修改一些引用

上级 293b17f8
......@@ -29,7 +29,7 @@ public class GSYApplication extends Application {
//GSYVideoType.enableMediaCodecTexture();
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER); //EXO 1 播放内核,弃用
GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER2); //EXO 2 播放内核
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.IJKEXOPLAYER2); //EXO 2 播放内核
//GSYVideoManager.instance().setVideoType(this, GSYVideoType.SYSTEMPLAYER); //系统播放器
//GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);
......
package com.example.gsyvideoplayer.exo;
import android.content.Context;
import android.net.NetworkInfo;
import android.net.Uri;
import android.support.annotation.Nullable;
import android.support.annotation.Size;
import android.view.Surface;
import android.view.SurfaceHolder;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.DefaultRenderersFactory;
import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayerFactory;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.SimpleExoPlayer;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.analytics.AnalyticsListener;
import com.google.android.exoplayer2.decoder.DecoderCounters;
import com.google.android.exoplayer2.ext.rtmp.RtmpDataSourceFactory;
import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory;
import com.google.android.exoplayer2.metadata.Metadata;
import com.google.android.exoplayer2.source.ConcatenatingMediaSource;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSourceEventListener;
import com.google.android.exoplayer2.source.TrackGroupArray;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.dash.DefaultDashChunkSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.source.smoothstreaming.DefaultSsChunkSource;
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
import com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelectionArray;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import com.google.android.exoplayer2.upstream.DefaultHttpDataSourceFactory;
import com.google.android.exoplayer2.upstream.cache.Cache;
import com.google.android.exoplayer2.upstream.cache.CacheDataSource;
import com.google.android.exoplayer2.upstream.cache.CacheDataSourceFactory;
import com.google.android.exoplayer2.upstream.cache.LeastRecentlyUsedCacheEvictor;
import com.google.android.exoplayer2.upstream.cache.SimpleCache;
import com.google.android.exoplayer2.util.Util;
import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import tv.danmaku.ijk.media.exo2.IjkExo2MediaPlayer;
import tv.danmaku.ijk.media.exo2.demo.EventLogger;
import tv.danmaku.ijk.media.player.AbstractMediaPlayer;
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.MediaInfo;
import tv.danmaku.ijk.media.player.misc.IjkTrackInfo;
/**
* 自定义exo player,实现不同于库的exo 无缝切换效果
......
......@@ -68,10 +68,12 @@ public class GSYExoPlayerManager implements IPlayerManager {
public void setSpeed(float speed, boolean soundTouch) {
//很遗憾,EXO2的setSpeed只能在播放前生效
//Debuger.printfError("很遗憾,目前EXO2的setSpeed只能在播放前设置生效");
try {
mediaPlayer.setSpeed(speed, 1);
} catch (Exception e) {
e.printStackTrace();
if (mediaPlayer != null) {
try {
mediaPlayer.setSpeed(speed, 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -131,4 +133,14 @@ public class GSYExoPlayerManager implements IPlayerManager {
}
mediaPlayer.next();
}
@Override
public long getNetSpeed() {
return 0;
}
@Override
public void setSpeedPlaying(float speed, boolean soundTouch) {
}
}
......@@ -413,6 +413,14 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
return getCacheManager(videoType).cachePreview(context, cacheDir, url);
}
@Override
public long getNetSpeed() {
if (playerManager != null) {
return playerManager.getNetSpeed();
}
return 0;
}
@Override
public void clearCache(Context context, File cacheDir, String url) {
clearDefaultCache(context, cacheDir, url);
......@@ -427,6 +435,13 @@ public abstract class GSYVideoBaseManager implements IMediaPlayer.OnPreparedList
return 0;
}
@Override
public void setSpeedPlaying(float speed, boolean soundTouch) {
if (playerManager != null) {
playerManager.setSpeedPlaying(speed, soundTouch);
}
}
protected void sendMessage(Message message) {
mMediaHandler.sendMessage(message);
}
......
......@@ -82,10 +82,12 @@ public class EXO2PlayerManager implements IPlayerManager {
public void setSpeed(float speed, boolean soundTouch) {
//很遗憾,EXO2的setSpeed只能在播放前生效
//Debuger.printfError("很遗憾,目前EXO2的setSpeed只能在播放前设置生效");
try {
mediaPlayer.setSpeed(speed, 1);
} catch (Exception e) {
e.printStackTrace();
if (mediaPlayer != null) {
try {
mediaPlayer.setSpeed(speed, 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -128,4 +130,19 @@ public class EXO2PlayerManager implements IPlayerManager {
}
return 0;
}
@Override
public long getNetSpeed() {
if (mediaPlayer != null) {
//todo
}
return 0;
}
@Override
public void setSpeedPlaying(float speed, boolean soundTouch) {
}
}
......@@ -172,6 +172,22 @@ public class IJKPlayerManager implements IPlayerManager {
return -1;
}
@Override
public long getNetSpeed() {
if(mediaPlayer != null) {
return mediaPlayer.getTcpSpeed();
}
return 0;
}
@Override
public void setSpeedPlaying(float speed, boolean soundTouch) {
if (mediaPlayer != null) {
mediaPlayer.setSpeed(speed);
mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", (soundTouch) ? 1 : 0);
}
}
private void initIJKOption(IjkMediaPlayer ijkMediaPlayer, List<VideoOptionModel> optionModelList) {
if (optionModelList != null && optionModelList.size() > 0) {
for (VideoOptionModel videoOptionModel : optionModelList) {
......
......@@ -32,4 +32,8 @@ public interface IPlayerManager {
void release();
int getBufferedPercentage();
long getNetSpeed();
void setSpeedPlaying(float speed, boolean soundTouch);
}
......@@ -2,7 +2,9 @@ package com.shuyu.gsyvideoplayer.player;
import android.content.Context;
import android.media.AudioManager;
import android.media.PlaybackParams;
import android.net.Uri;
import android.os.Build;
import android.os.Message;
import android.view.Surface;
......@@ -74,7 +76,7 @@ public class SystemPlayerManager implements IPlayerManager {
@Override
public void setSpeed(float speed, boolean soundTouch) {
Debuger.printfError(" not support setSpeed");
setSpeed(speed);
}
@Override
......@@ -109,4 +111,29 @@ public class SystemPlayerManager implements IPlayerManager {
public int getBufferedPercentage() {
return -1;
}
@Override
public long getNetSpeed() {
if (mediaPlayer != null) {
//todo
}
return 0;
}
@Override
public void setSpeedPlaying(float speed, boolean soundTouch) {
}
private void setSpeed(float speed) {
if (mediaPlayer != null && mediaPlayer.getInternalMediaPlayer() != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
PlaybackParams playbackParams = new PlaybackParams();
playbackParams.setSpeed(speed);
mediaPlayer.getInternalMediaPlayer().setPlaybackParams(playbackParams);
} else {
Debuger.printfError(" not support setSpeed");
}
}
}
}
......@@ -29,7 +29,6 @@ import java.util.HashMap;
import java.util.Map;
import tv.danmaku.ijk.media.player.IMediaPlayer;
import tv.danmaku.ijk.media.player.IjkMediaPlayer;
import static com.shuyu.gsyvideoplayer.utils.CommonUtil.getTextSpeed;
......@@ -918,18 +917,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe
* 再打开已经缓存的本地文件,网络速度才会回0.因为是播放本地文件了
*/
public long getNetSpeed() {
if (getGSYVideoManager().getMediaPlayer() != null
&& (getGSYVideoManager().getMediaPlayer() instanceof IjkMediaPlayer)) {
try {
return ((IjkMediaPlayer) getGSYVideoManager().getMediaPlayer()).getTcpSpeed();
} catch (Exception e) {
e.printStackTrace();
}
return -1;
} else {
return -1;
}
return getGSYVideoManager().getNetSpeed();
}
/**
......@@ -1027,17 +1015,7 @@ public abstract class GSYVideoView extends GSYTextureRenderView implements GSYMe
*/
public void setSpeedPlaying(float speed, boolean soundTouch) {
setSpeed(speed, soundTouch);
if (getGSYVideoManager().getMediaPlayer() != null) {
if (getGSYVideoManager().getMediaPlayer() instanceof IjkMediaPlayer) {
IjkMediaPlayer ijkMediaPlayer = (IjkMediaPlayer) getGSYVideoManager().getMediaPlayer();
try {
ijkMediaPlayer.setSpeed(speed);
ijkMediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "soundtouch", (soundTouch) ? 1 : 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
getGSYVideoManager().setSpeedPlaying( speed, soundTouch);
}
public boolean isShowPauseCover() {
......
......@@ -65,4 +65,7 @@ public interface GSYVideoViewBridge {
void clearCache(Context context, File clearCache, String url);
long getNetSpeed();
void setSpeedPlaying(float speed, boolean soundTouch);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册