在Android的TextureView中播放视频后播放视频存在问题

在Android的TextureView中播放视频后播放视频存在问题,第1张

概述使用TextureView内的MediaPlayer播放视频,它可以工作.当视频结束并且应该播放另一个视频时,我调整TextureView的大小以适应即将到来的视频的宽高比(例如–从3:4到9:16,依此类推……).问题,在第一个视频结束后,它的最后一帧仍然显示,调整TextureView的大小,第一个视频的最后一帧

使用TextureVIEw内的MediaPlayer播放视频,它可以工作.

当视频结束并且应该播放另一个视频时,我调整TextureVIEw的大小以适应即将到来的视频的宽高比(例如 – 从3:4到9:16,依此类推……).

问题,在第一个视频结束后,它的最后一帧仍然显示,
调整TextureVIEw的大小,第一个视频的最后一帧保持一瞬间但现在具有不良的宽高比,第二个视频播放得很好.

显示(尺寸X尺寸)矩形的视频图像:

此搜索:
视频1,(3:4):

镜像2:
视频1,这里我们介于2个视频之间,视频1的最后一帧,现在调整大小(9:16),但矩形看起来很糟糕.下面的图片显示为瞬间:

图像3:
视频2,(9:16),播放效果不错但在瞬间显示image2之后:

使用的代码没有什么特别之处,以下是它的一些部分:

// To init the TextureVIEw and MediaPlayer:public voID onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int wIDth, int height) {    m_MediaPlayer = new MediaPlayer();    m_Surface = new Surface(surfaceTexture);    m_MediaPlayer.setSurface(m_Surface);}m_TextureVIEw.setSurfaceTextureListener(this);// To Resize:LayoutParams layoutParams = new FrameLayout.LayoutParams(newTVWIDth, newTVHeight);layoutParams.gravity = Gravity.CENTER;m_TextureVIEw.setLayoutParams(layoutParams);// To play:m_MediaPlayer.reset();m_MediaPlayer.setDataSource(vIDeofilePath);m_MediaPlayer.prepare();// <--- Here comes a call to "To Resize" which is shown right above this codem_MediaPlayer.start();

解决方法:

也许有几种选择.

理论上,您可以通过断开媒体播放器,使用GLES清除曲面,然后再次连接媒体播放器来清除Surface.请参阅Grafika的PlayMovieSurfaceActivity中的clickPlayStop()和clearSurface().这使用的是MediaCodec,而不是MediaPlayer,所以我不确定它是如何翻译的.

另一种选择是使用TextureVIEw转换而不是自定义框架布局来设置纵横比.由于您的布局没有改变,因此没有失真的帧.有关示例,请参阅PlayMovieActivity中的adjustAspectRatio().

总结

以上是内存溢出为你收集整理的在Android的TextureView中播放视频后播放视频存在问题全部内容,希望文章能够帮你解决在Android的TextureView中播放视频后播放视频存在问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存