Giter Site home page Giter Site logo

Comments (3)

JeffMony avatar JeffMony commented on May 22, 2024

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

可以将你的代码贴一下。

from jeffvideocache.

qyf123 avatar qyf123 commented on May 22, 2024

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

}

from jeffvideocache.

qyf123 avatar qyf123 commented on May 22, 2024

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

from jeffvideocache.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.