在 Android 上以多个视图播放同一视频

问题描述 投票:0回答:1

我有一个播放器(在我的例子中是 ExoPlayer),并且有一个视频 URL。我想同时在多个视图中播放该视频,如下面的屏幕截图所示。以下是一些注意事项:

android surfaceview exoplayer textureview
1个回答
0
投票
我可能找到一些解决方案:

    您可以为 Exo 播放器设置不同的表面,通过这样做,Exo 播放器将保留所有表面的生命周期并在所有表面上渲染视频,但这可能会非常滞后,并且 Exo 播放器不会在同一表面上渲染内容相反,在所有表面上的时间,在表面上渲染然后停止,然后在表面 2 上渲染。实施如下:
//Jetpack compose //player -> exo player builder AndroidView( factory = {SurfaceView(applicationContext) }, modifier = Modifier .padding(1.dp) .aspectRatio(16f / 9f) .clip( RoundedCornerShape(10.dp) ), update = { surfaceView1 -> // This is the lambda you're asking about player.setVideoSurface(surfaceView1.holder.surface) } ) AndroidView(factory = { SurfaceView(applicationContext) }, modifier = Modifier .padding(1.dp) .aspectRatio(16f / 9f) .clip( RoundedCornerShape(10.dp) )) { player.setVideoSurface(it.holder.surface) } AndroidView(factory = { SurfaceView(applicationContext) }, modifier = Modifier .padding(1.dp) .aspectRatio(16f / 9f) .clip( RoundedCornerShape(10.dp) )) { player.setVideoSurface(it.holder.surface)
截图:

  1. 复制 Surface 的内容并使用 Canvas 将其渲染到另一个 Surface,如果您要使用相同的视频链接来播放视频,建议使用此方法。
© www.soinside.com 2019 - 2024. All rights reserved.