Open qyf123 opened 3 years ago
可以用MediaPlayer实现吗,在demo 里按照IjkPlayer 模板实现试了一下, MediaPlayer 一直报错, 找不到原因。。。
可以将你的代码贴一下。
可以用MediaPlayer实现吗,在demo 里按照IjkPlayer 模板实现试了一下, MediaPlayer 一直报错, 找不到原因。。。
可以将你的代码贴一下。
是在demo里复制了一下IjkPlayerImpl 改成了MediaPlayer , 下面是代码:
public class MediaPlayerImpl extends BasePlayerImpl { private static final String TAG = "MediaPlayerImpl";
private MediaPlayer mIjkPlayer;
public MediaPlayerImpl(Context context) {
super(context);
mIjkPlayer = new MediaPlayer();
initPlayerListeners();
}
private void initPlayerListeners() {
mIjkPlayer.setOnPreparedListener(mOnPreparedListener);
mIjkPlayer.setOnVideoSizeChangedListener(mOnVideoSizeChangedListener);
mIjkPlayer.setOnErrorListener(mOnErrorListener);
}
@Override
public void setDataSource(Context context, Uri uri, Map<String, String> headers) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException {
String playUrl;
if (mPlayerSettings.getLocalProxyEnable()) {
playUrl = ProxyCacheUtils.getProxyUrl(uri.toString(), null, null);
//请求放在客户端,非常便于控制
mLocalProxyVideoControl.startRequestVideoInfo(uri.toString(), null, null);
} else {
playUrl = uri.toString();
}
mIjkPlayer.setDataSource(context, Uri.parse(playUrl), headers);
}
@Override
public void setSeekType(SeekType type) {
// if (type == SeekType.EXACT_SYNC) { // mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 1); // } else { // mIjkPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "enable-accurate-seek", 0); // } }
@Override
public void setSurface(Surface surface) {
mIjkPlayer.setSurface(surface);
}
@Override
public void prepareAsync() throws IllegalStateException {
mIjkPlayer.prepareAsync();
}
@Override
public void start() throws IllegalStateException {
if (mPlayerSettings.getLocalProxyEnable()) {
mLocalProxyVideoControl.resumeLocalProxyTask();
}
mIjkPlayer.start();
}
@Override
public void stop() throws IllegalStateException {
mIjkPlayer.stop();
}
@Override
public void pause() throws IllegalStateException {
if (mPlayerSettings.getLocalProxyEnable()) {
mLocalProxyVideoControl.pauseLocalProxyTask();
}
mIjkPlayer.pause();
}
@Override
public void setSpeed(float speed) {
//mIjkPlayer.setSpeed(speed);
}
@Override
public long getCurrentPosition() {
return mIjkPlayer.getCurrentPosition();
}
@Override
public long getBufferedPosition() {
if (mPlayerSettings.getLocalProxyEnable()) {
return (long) (mProxyCachePercent * mIjkPlayer.getDuration() / 100);
}
return 0;
}
@Override
public long getDuration() {
return mIjkPlayer.getDuration();
}
@Override
public boolean isPlaying() {
return mIjkPlayer.isPlaying();
}
@Override
public void reset() {
mIjkPlayer.reset();
}
@Override
public void release() {
if (mPlayerSettings.getLocalProxyEnable()) {
mLocalProxyVideoControl.releaseLocalProxyResources();
}
mIjkPlayer.release();
}
@Override
public void seekTo(long position) throws IllegalStateException {
if (mPlayerSettings.getLocalProxyEnable()) {
mLocalProxyVideoControl.seekToCachePosition(position);
}
//mIjkPlayer.seekTo(position);
}
private MediaPlayer.OnPreparedListener mOnPreparedListener = mp -> notifyOnPrepared();
private MediaPlayer.OnVideoSizeChangedListener mOnVideoSizeChangedListener = new MediaPlayer.OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(MediaPlayer mediaPlayer, int width, int height) {
notifyOnVideoSizeChanged(width, height, 1, 1, 0);
}
};
private MediaPlayer.OnErrorListener mOnErrorListener = (mp, what, extra) -> {
notifyOnError(what, "" + extra);
return true;
};
}
这个是大概的日志, 中间有一段error
2021-06-24 15:57:47.705 24576-24576/com.jeffmony.sample I/ViewRootImpl@4c2aa87[MainActivity]: ViewPostIme pointer 0 2021-06-24 15:57:47.802 24576-24576/com.jeffmony.sample I/ViewRootImpl@4c2aa87[MainActivity]: ViewPostIme pointer 1 2021-06-24 15:57:47.846 24576-24576/com.jeffmony.sample I/DecorView: [INFO] isPopOver=false, config=true 2021-06-24 15:57:47.847 24576-24576/com.jeffmony.sample I/DecorView: updateCaptionType >> DecorView@5cc1205[], isFloating=false, isApplication=true, hasWindowDecorCaption=false, hasWindowControllerCallback=true 2021-06-24 15:57:47.847 24576-24576/com.jeffmony.sample D/DecorView: setCaptionType = 0, this = DecorView@5cc1205[] 2021-06-24 15:57:47.894 24576-24576/com.jeffmony.sample D/InputTransport: Input channel constructed: '5a26b5a', fd=91 2021-06-24 15:57:47.896 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: setView = com.android.internal.policy.DecorView@5cc1205 TM=true 2021-06-24 15:57:47.917 24576-24576/com.jeffmony.sample I/SurfaceControl: assignNativeObject: nativeObject = 0 Surface(name=null)/@0xbf715ba / android.view.SurfaceControl.readFromParcel:1115 android.view.IWindowSession$Stub$Proxy.relayout:1820 android.view.ViewRootImpl.relayoutWindow:9005 android.view.ViewRootImpl.performTraversals:3360 android.view.ViewRootImpl.doTraversal:2618 android.view.ViewRootImpl$TraversalRunnable.run:9971 android.view.Choreographer$CallbackRecord.run:1010 android.view.Choreographer.doCallbacks:809 android.view.Choreographer.doFrame:744 android.view.Choreographer$FrameDisplayEventReceiver.run:995 2021-06-24 15:57:47.919 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: Relayout returned: old=(0,0,1080,2400) new=(0,0,1080,2400) req=(1080,2400)0 dur=12 res=0x7 s={true 492312436736} ch=true fn=-1 2021-06-24 15:57:47.924 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: [DP] dp(1) 1 android.view.ViewRootImpl.reportNextDraw:10957 android.view.ViewRootImpl.performTraversals:3845 android.view.ViewRootImpl.doTraversal:2618 2021-06-24 15:57:47.924 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: [DP] pd() Asnyc report 2021-06-24 15:57:47.927 24576-24576/com.jeffmony.sample V/MediaPlayer-JNI: native_setup 2021-06-24 15:57:47.927 24576-24576/com.jeffmony.sample V/MediaPlayerNative: constructor 2021-06-24 15:57:47.927 24576-24576/com.jeffmony.sample V/MediaPlayerNative: setListener 2021-06-24 15:57:47.932 24576-24576/com.jeffmony.sample V/MediaPlayerNative: setVideoSurfaceTexture 2021-06-24 15:57:47.937 24576-24576/com.jeffmony.sample I/StorageUtils: readVideoCacheInfo : dir=/storage/emulated/0/Android/data/com.jeffmony.sample/files/Video/jeffmony/d55728f26bfeb5f32e77b00d320c605f 2021-06-24 15:57:47.946 24576-24576/com.jeffmony.sample I/VideoProxyCacheManager: startRequestVideoInfo VideoCacheInfo[url=https://static.starscape.live/2021-06-21/3643311789e2ceab54b95cae86261aba/chunk/playlist.m3u8,type=1,isCompleted=true,cachedSize=4781592,totalSize=4781592,cachedTs=17,totalTs=17] 2021-06-24 15:57:47.947 24576-24576/com.jeffmony.sample V/MediaHTTPService: MediaHTTPService(android.media.MediaHTTPService@3f0d386): Cookies: null 2021-06-24 15:57:47.954 24576-24576/com.jeffmony.sample V/MediaPlayerNative: setVideoSurfaceTexture 2021-06-24 15:57:47.955 24576-24576/com.jeffmony.sample V/MediaPlayerNative: prepareAsync 2021-06-24 15:57:47.957 24576-25159/com.jeffmony.sample V/MediaHTTPService: makeHTTPConnection: CookieHandler (java.net.CookieManager@792cde) exists. 2021-06-24 15:57:47.957 24576-25159/com.jeffmony.sample V/MediaHTTPService: makeHTTPConnection(android.media.MediaHTTPService@3f0d386): cookieHandler: java.net.CookieManager@792cde Cookies: null 2021-06-24 15:57:47.966 24576-25159/com.jeffmony.sample I/MediaHTTPConnection: setReadTimeout and setConnectTimeout with 8000ms 2021-06-24 15:57:47.967 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: [DP] pdf(0) 1 android.view.ViewRootImpl.lambda$performDraw$1$ViewRootImpl:4668 android.view.-$$Lambda$ViewRootImpl$DJd0VUYJgsebcnSohO6h8zc_ONI.run:6 android.os.Handler.handleCallback:938 2021-06-24 15:57:47.967 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: [DP] rdf() 2021-06-24 15:57:47.967 24576-25159/com.jeffmony.sample I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 2021-06-24 15:57:47.967 24576-30870/com.jeffmony.sample I/VideoProxyCacheManager: onTaskCompleted ----, totalSize=4781592 2021-06-24 15:57:47.967 24576-25159/com.jeffmony.sample I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 2021-06-24 15:57:47.968 24576-24576/com.jeffmony.sample I/ViewRootImpl@4c2aa87[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0 1 2021-06-24 15:57:47.970 24576-25159/com.jeffmony.sample I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 2021-06-24 15:57:47.970 24576-25159/com.jeffmony.sample I/System.out: (HTTPLog)-Static: isSBSettingEnabled false 2021-06-24 15:57:47.978 24576-30877/com.jeffmony.sample I/SocketProcessTask: sRequestCountAtomic : 1 2021-06-24 15:57:47.989 24576-25159/com.jeffmony.sample I/MediaHTTPConnection: response code = 200 2021-06-24 15:57:47.989 24576-30877/com.jeffmony.sample I/M3U8Response: Send M3U8 video info end, this=com.jeffmony.videocache.socket.response.M3U8Response@70ede0c 2021-06-24 15:57:47.990 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 495103274496 - Surface(name=Surface(name=dcbb838 InputMethod)/@0x6ae8777 - animation-leash)/@0xd4b2a38 / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.ImeInsetsSourceConsumer.setControl:154 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[495103274496] 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[495103274496] 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 495103268352 - Surface(name=Surface(name=2a4720 NavigationBar0)/@0x541a7fe - animation-leash)/@0x2446355 / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.InsetsController.onControlsChanged:833 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[495103268352] 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[495103268352] 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 492312762816 - Surface(name=Surface(name=9396502 StatusBar)/@0x4d912b2 - animation-leash)/@0x620616a / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.InsetsController.onControlsChanged:833 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[492312762816] 2021-06-24 15:57:47.991 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[492312762816] 2021-06-24 15:57:47.993 24576-24576/com.jeffmony.sample I/ViewRootImpl@54ef6e5[VideoPlayActivity]: MSG_WINDOW_FOCUS_CHANGED 1 1 2021-06-24 15:57:47.993 24576-24576/com.jeffmony.sample D/InputMethodManager: prepareNavigationBarInfo() DecorView@5cc1205[VideoPlayActivity] 2021-06-24 15:57:47.994 24576-24576/com.jeffmony.sample D/InputMethodManager: getNavigationBarColor() -855310 2021-06-24 15:57:47.995 24576-24576/com.jeffmony.sample D/InputMethodManager: prepareNavigationBarInfo() DecorView@5cc1205[VideoPlayActivity] 2021-06-24 15:57:47.995 24576-24576/com.jeffmony.sample D/InputMethodManager: getNavigationBarColor() -855310 2021-06-24 15:57:47.995 24576-24576/com.jeffmony.sample V/InputMethodManager: Starting input: tba=com.jeffmony.sample ic=null mNaviBarColor -855310 mIsGetNaviBarColorSuccess true , NavVisible : true , NavTrans : false 2021-06-24 15:57:47.996 24576-24576/com.jeffmony.sample D/InputMethodManager: startInputInner - Id : 0 2021-06-24 15:57:47.996 24576-24576/com.jeffmony.sample I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus 2021-06-24 15:57:48.000 24576-24576/com.jeffmony.sample D/InputTransport: Input channel constructed: 'ClientS', fd=96 2021-06-24 15:57:48.000 24576-24576/com.jeffmony.sample D/InputTransport: Input channel destroyed: 'ClientS', fd=97 2021-06-24 15:57:48.010 24576-24576/com.jeffmony.sample D/SurfaceControl: hide : mNativeObject = 495105193280 - sc.mNativeObject = 490475248928 - Surface(name=Surface(name=dcbb838 InputMethod)/@0x6ae8777 - animation-leash)/@0xb73f65b 2021-06-24 15:57:48.010 24576-24576/com.jeffmony.sample D/SurfaceControl: nativeSetFlags Done : Surface(name=Surface(name=dcbb838 InputMethod)/@0x6ae8777 - animation-leash)/@0xb73f65b 2021-06-24 15:57:48.011 24576-25196/com.jeffmony.sample V/MediaPlayerNative: message received msg=100, ext1=1, ext2=-2147483648 2021-06-24 15:57:48.011 24576-25196/com.jeffmony.sample E/MediaPlayerNative: error (1, -2147483648) 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 492312004448 - Surface(name=Surface(name=2a4720 NavigationBar0)/@0x541a7fe - animation-leash)/@0xad1cef8 / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.InsetsController.onControlsChanged:833 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[492312004448] 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[492312004448] 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 492312004064 - Surface(name=Surface(name=9396502 StatusBar)/@0x4d912b2 - animation-leash)/@0x434dfd1 / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.InsetsController.onControlsChanged:833 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[492312004064] 2021-06-24 15:57:48.012 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[492312004064] 2021-06-24 15:57:48.013 24576-24576/com.jeffmony.sample I/SurfaceControl: release : mNativeObject = 492558296000 - Surface(name=Surface(name=dcbb838 InputMethod)/@0x6ae8777 - animation-leash)/@0x35b2a36 / android.view.-$$Lambda$Rl1VZmNJ0VZDLK0BAbaVGis0rrA.accept:2 android.view.InsetsSourceControl.release:170 android.view.InsetsSourceConsumer.setControl:202 android.view.ImeInsetsSourceConsumer.setControl:154 2021-06-24 15:57:48.013 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject s[492558296000] 2021-06-24 15:57:48.013 24576-24576/com.jeffmony.sample I/SurfaceControl: nativeRelease nativeObject e[492558296000] 2021-06-24 15:57:48.016 24576-24576/com.jeffmony.sample E/MediaPlayer: Error (1,-2147483648)
可以用MediaPlayer实现吗,在demo 里按照IjkPlayer 模板实现试了一下, MediaPlayer 一直报错, 找不到原因。。。