Open Allen-cxl opened 8 years ago
切换时重新 setSurface
还是卡住画面不动
重建SurfaceView, 在mediaplayer.release里 mSurface应该也被release了,检查mSurface.isValid
重新创建是ok的,问题是解决了。有个建议,android原生的MediaPlayer,切换视频源的时候,只需要reset重新设置url,画面就会更新,为什么ijk不这样?
@Allen-cxl ,是在哪里重新创建的,能分享下吗,谢谢。
@Allen-cxl 可以請問要怎麼重新創建呢?我已經重新設 mTextureView.setSurfaceTexture(new SurfaceTexture(mTextureView.getId())); 還是不行~請問該如何解決這問題呢? 非常感謝!
使用 textureview 的时候遇到这个问题。 首先,肯定不是重建播放器时的 oldplayer.release 造成的,这一点你可以注释掉看看。 重建 TextureView , 就是用新的 TextureView , 但是会造成切换时的黑屏。 3046
解决了,确实是重新绑定
可以复用 textureview,但是不要 new surface, reuse that surface instead。
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
if(player instanceof IjkMediaPlayer) {
IjkMediaPlayer mMediaPlayer = (IjkMediaPlayer) player;
mMediaPlayer.setSurface(mSurface = new Surface(surface));
}}
……
ReCreatePlayer();
if(mSurface!=null)
mMediaPlayer.setSurface(mSurface);
切换视频 虽然需要重建什么的, 但是效率丝毫不差 不过有点建议 在不同尺寸的视频间切换,发现上一个视频的画面还在,但是尺寸已经变成下一个视频的尺寸了,导致短暂的画面拉伸,有点污眼睛。黑屏与拉伸不可兼去耶?
Mark
1.这是切换视频源的函数 private void setPlayVideo(VideoUrl videoUrl, int seekTime) {
2.这是创建ijkMediaPlayer的函数 private IMediaPlayer createPlayer() {
3.这是SurfaceTextureListener callback监听。 private TextureView.SurfaceTextureListener callback = new TextureView.SurfaceTextureListener (){
问题描述:刚进入视频播放页面第一个视频正常播放,切换到下一个视频的时候调用setPlayVideo函数,画面停止一个视频禁止不动?请问怎么解决呢?