Eln*_*yev 4 android exoplayer exoplayer2.x
我知道可以在ExoPlayer中使用TextureView.但我找不到任何关于如何以适当的方式实现此功能的示例.你能帮我解决这个问题吗?
它PlayerView有一个xml属性surface_type,让你选择是否要使用a SurfaceView或a TextureView.
(注意:SimpleExoPlayerView已经PlayerView在最近的版本中重命名,因为它只依赖于Player界面而不再依赖于SimpelExoPlayerView.)
您可以选择texture_view,surface_view(默认)或none.有关详细信息,请参阅PlayerView的JavaDoc的主要部分.
<com.google.android.exoplayer2.ui.PlayerView android:id="@+id/player_view"
app:surface_type="texture_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)
从文档:
如果您需要在播放器控制细粒度的控制和
Surface在其上渲染视频,可以设置玩家的目标SurfaceView,TextureView,SurfaceHolder或者Surface使用SimpleExoPlayer的直接setVideoSurfaceView,setVideoTextureView,setVideoSurfaceHolder和setVideoSurface分别的方法。
所以这里的相关部分是setVideoTextureView(). 就像是:
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
TexturView textureView = findViewById(texture_view);
player.setVideoTextureView(textureView);
Run Code Online (Sandbox Code Playgroud)
您还可以Surface从 a创建一个SurfaceTexture您可以通过TextureView的setSurfaceTextureViewListener()。请参阅TextureView 的文档和这篇文章。然后你可以打电话setSurface(...)给玩家。
但是现在SimpleExoPlayer有了TextureViewsetter ,你真的不需要再这样做了(我们在旧的 ExoPlayer 中并不总是有这个)。同样作为另一个参考,这是ExoPlayer 上有关支持此功能的问题。
作为一个侧面说明,你可以看到之间的差异SurfaceView,并TextureView 在这里。一般建议使用 a SurfaceView,但存在细微差别。
[编辑]
如果你想即时完成,你可以像我上面写的那样实例化SimpleExoPlayer(not SimpleExoPlayerView),然后调用setPlayer(...)你的PlayerView(你可以用 XML 或动态定义)。
如果您不需要即时设置表面/纹理视图,那么您只需PlayerView在布局 XML 中通过app:surface_type="texture_view".
| 归档时间: |
|
| 查看次数: |
3554 次 |
| 最近记录: |