Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大佬,可以增加原生api MediaPlayer 实现的demo吗 #10

Open
qyf123 opened this issue Jun 24, 2021 · 3 comments
Open

大佬,可以增加原生api MediaPlayer 实现的demo吗 #10

qyf123 opened this issue Jun 24, 2021 · 3 comments

Comments

@qyf123
Copy link

qyf123 commented Jun 24, 2021

可以用MediaPlayer实现吗,在demo 里按照IjkPlayer 模板实现试了一下, MediaPlayer 一直报错, 找不到原因。。。

@JeffMony
Copy link
Owner

可以用MediaPlayer实现吗,在demo 里按照IjkPlayer 模板实现试了一下, MediaPlayer 一直报错, 找不到原因。。。

可以将你的代码贴一下。

@qyf123
Copy link
Author

qyf123 commented Jun 24, 2021

可以用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;
};

}

@qyf123
Copy link
Author

qyf123 commented Jun 24, 2021

这个是大概的日志, 中间有一段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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants