前言

测试中,发现ExoPlayer+PlayerView播放部分视频出现绿条屏,最终研究了一下,解决了。记录一下,方便自己查阅。

正文

播放时出现的绿条屏(如图,忽略背景图哈,当时debug设置的设置的颜色)

ExoPlayer+PlayerView播放部分视频出现绿条屏

回归正题。

之前学习过如果使用ExoPlayer+PlayerView进行播放多媒体,具体看《Exoplayer简单实用》。

这个问题主要是在于PlayerView的配置。

xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <androidx.media3.ui.PlayerView
        android:id="@+id/video_play_view"
        android:layout_width="match_parent"
        android:layout_gravity="center"
        android:layout_height="match_parent" />

</FrameLayout>

看了PlayerView源码会发现,PlayerView默认使用SurfaceView进行显示视频图像。

经过测试,发送使用SurfaceView+ExoPlayer播放部分压缩的视频,就概率出现绿条。

解决方式是配置使用使用TextureView播放即可。

PlayerView支持TextureView和SurfaceView播放,只要修改配置即可。

也就像在xml中新增如下选项即可。

app:surface_type="texture_view"

参考文章

  1. Exoplayer简单实用

相关文章

暂无评论

none
暂无评论...