Shu*_*dra 5 android surfaceview textureview
我有一个媒体数据源,我正在使用android播放媒体MediaPlayer.
如何MediaPlayer在同一个视图中显示多个视图的视频输出Activity,有没有其他方法可以做到这一点?
我希望媒体的视频部分能够在两个不同的视图中呈现,而无需从数据源多次读取.
现行代码:
TextureView mTextureView1;
TextureView mTextureView2;
mTextureView1.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mMediaPlayer = new MediaPlayer(AppActivity.this);
try {
mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(path));
} catch (IOException e) {
e.printStackTrace();
}
mMediaPlayer.setSurface(new Surface(surface));
mMediaPlayer.setLooping(true);
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
Run Code Online (Sandbox Code Playgroud)
您当前正在使用TextureView,它接收SurfaceTexture 中的帧,然后将它们渲染到View UI 层上。
一种方法是创建您自己的 SurfaceTexture 来接收帧,然后使用 OpenGL ES 以您喜欢的方式渲染帧。有关示例,请参阅Grafika中的“来自相机的纹理”活动。它可以对来自摄像头的输入进行定位、旋转和缩放;您可以轻松更改此设置以接收来自 MediaPlayer 的输入,并将纹理渲染到 SurfaceView 上两次。
如果你想将其渲染到不同的视图上,你可以设置几个纹理视图并渲染到它们。对每个视图使用具有不同 EGL 表面的单个 EGL 上下文。
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |