Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使TextureView播放具有圆角和气泡效果的视频_Android_Video_Textureview_Bubble Popup - Fatal编程技术网

Android 如何使TextureView播放具有圆角和气泡效果的视频

Android 如何使TextureView播放具有圆角和气泡效果的视频,android,video,textureview,bubble-popup,Android,Video,Textureview,Bubble Popup,我设法在Android上用TextureView和MediaPlayer播放视频。我是这样做的: 我使用SurfaceTexture创建了一个曲面: public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int w, int h) { mSurface = new Surface(surfaceTexture); ... ... } 将曲面连接到MediaPlayer:

我设法在Android上用TextureView和MediaPlayer播放视频。我是这样做的: 我使用SurfaceTexture创建了一个曲面:

    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int w, int h)
{
    mSurface = new Surface(surfaceTexture);
    ...
    ...
}
将曲面连接到MediaPlayer:

    try
{
    mMediaPlayer.setDataSource(mPlayUrl);
    mMediaPlayer.setSurface(mSurface);
    ...
    ...
}
这没关系,但对我来说还不够。我希望TextureView具有圆角,看起来像一个气泡(有角度),请看下图:


我发现了一篇非常有用的文章(),但作者选择了GLSurfaceView,只实现了圆角。我相信TextureView也适合实现我的效果,SurfaceTexure处理是关键。但我不熟悉opengl,谁能给我一些建议?

鉴于你的背景是纯色,你可以轻松地用。不过,如果您有任何背景,它都不会起作用。

我知道回复时间很晚,但如果有人仍在努力找到下面示例中的解决方案,可能会有所帮助。


试试这个样品。它以圆形显示相机预览。基本上,它使用FrameLayout作为父级,在圆圈中显示Textureview。

这是一篇非常好的文章。通过使用OpenGL ES对TextureView的SurfaceTexture进行渲染,可以使用相同的方法。创建侧面凸起要么需要剃掉视频的右边缘,要么将内容拉伸到侧面。不管怎样,你都需要弄清楚OpenGL的纹理映射是如何工作的。实际上,对于你正在做的事情,他的方法#1可能会很好地工作。创建一个位于TextureView顶部的视图,该视图大部分是透明的,只需使用与背景相同的颜色遮住角落和右边缘即可。@fadden这篇文章的作者给出了3种方法,但他说TextureView不适合这样做。他的话是:“前两个当然是最方便的,但我们无法真正控制视频如何映射到屏幕上(如果TextureView允许您定义自己的几何体+着色器,那就太好了),我们也无法访问帧的存储位置以便修改它们。”你的意思是他错了吗?@fadden我发现你的grafika需要api级别18,而你使用的opengl api在api级别18以下是不可用的。我相信他说的是你不能随意操纵TextureView本身。可以使用OpenGL ES渲染到TextureView或SurfaceView,就像渲染到GLSurfaceView一样。我不确定您所指的API在API 18之前是不可用的;您只需从TextureView的SurfaceTexture构建一个曲面并在其上绘制。Grafika使用EGL1.4,这需要API 17,但是您可以使用EGL1.0的等价物(请参见以两种方式编写的程序示例)。是的。如果背景改变,遮罩就会消失。这不是一个好的解决办法。