JeffVideoCache icon indicating copy to clipboard operation
JeffVideoCache copied to clipboard

很痛苦哥们,你播放完成回调没有写

Open Z-PENG-S opened this issue 1 year ago • 3 comments

只能把你代码拉下来手动导包当做library引入了,依赖不是最新版,包括你现在的代码,只有onCompletion回调,具体实现你没有写。 我只用到了ExoPlayer,ijk的没用到没改,如果你看到了,可以去加上播放完成的回调:

BasePlayerImpl中加入: protected void notifyOnCompletion() { VideoProxyThreadUtils.runOnUiThread(() -> { if (mOnCompletionListener != null) { mOnCompletionListener.onCompletion(); } }); }

ExoPlayerImpl中:

@Override public void onPlayerStateChanged(boolean playWhenReady, int playbackState) { LogUtils.i(TAG, "onPlayerStateChanged playWhenReady="+playWhenReady+", playbackState="+playbackState); switch(playbackState) { case Player.STATE_BUFFERING: break; case Player.STATE_IDLE: break; case Player.STATE_READY: if (mPrepareState == PREPARING_STATE) { notifyOnPrepared(); mPrepareState = PREPARED_STATE; } break; case Player.STATE_ENDED: //新加 notifyOnCompletion(); break; default: break; } }

好了,我要把你的代码引入我的项目了,我加班了哥们儿。

Z-PENG-S avatar Oct 12 '24 10:10 Z-PENG-S

老实了哥们,帮我看看什么问题,把你项目中的三个library引入后,代码没改,现在打开视频白屏报错:

ExoPlayerImplInternal: Source error com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:282) at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:177) at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) at com.google.android.exoplayer2.source.hls.HlsMediaChunk.prepareExtraction(HlsMediaChunk.java:390) at com.google.android.exoplayer2.source.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:369) at com.google.android.exoplayer2.source.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:343) at com.google.android.exoplayer2.source.hls.HlsMediaChunk.load(HlsMediaChunk.java:314) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:415) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) Caused by: java.net.ConnectException: Failed to connect to /127.0.0.1:37207 at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:147) at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:116) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:186) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:550) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:439) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:280) at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:177)  at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83)  at com.google.android.exoplayer2.source.hls.HlsMediaChunk.prepareExtraction(HlsMediaChunk.java:390)  at com.google.android.exoplayer2.source.hls.HlsMediaChunk.feedDataToExtractor(HlsMediaChunk.java:369)  at com.google.android.exoplayer2.source.hls.HlsMediaChunk.loadMedia(HlsMediaChunk.java:343)  at com.google.android.exoplayer2.source.hls.HlsMediaChunk.load(HlsMediaChunk.java:314)  at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:415)  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)  at java.lang.Thread.run(Thread.java:923) 

Z-PENG-S avatar Oct 12 '24 11:10 Z-PENG-S

开启本地代理: mLocalProxyEnable = false;,视频可以播放,可以缓冲后面十几秒,但是缓存文件夹历并没有缓存文件,如果 mLocalProxyEnable = true,视频直接白屏报错,提示上面刚说的异常,error信息提示连接失败,127.0.0.1:37207的问题,麻烦老哥帮忙排查一下问题,解决一下,感谢。

Z-PENG-S avatar Oct 12 '24 12:10 Z-PENG-S

OK,解决了

Z-PENG-S avatar Oct 14 '24 02:10 Z-PENG-S