kotlin 如何在Android Studio中防止循环视频出现卡顿?

apeeds0o  于 2023-08-07  发布在  Kotlin
关注(0)|答案(2)|浏览(211)

我正在android studio中开发一个应用程序,我的许多应用程序屏幕都会有循环的视频背景!!我设法让它工作,但当我在模拟器或物理设备上运行应用程序时,它在循环之前会断断续续一小段时间。我以为这可能只是模拟器在挣扎,但暂停发生在一个固定的时间间隔。我对android开发非常陌生,所以如果我错过了一个明显的修复或我的代码不是很好,我道歉。我还没有能够找到一个解决方案,除了只是得到一个非常长的视频,我宁愿不这样做,以保存空间。这个问题有解决的办法吗?还是我们只能忍受它?
视频:(希望这能起作用!!)(别担心这个logo是临时的,他们做得很好,而且他们会留在应用程序中的某个地方)Video
视频XML:

<VideoView
        android:id="@+id/vvAuthBackground"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0" />

字符串
视频Kotlin:

val path = "android.resource://" + "com.lerstudios.aurelia" + "/" + R.raw.video
vvAuthBackground.setVideoURI(Uri.parse(path))

vvAuthBackground.setOnPreparedListener { mp ->
    mp.start()
    mp.isLooping = true
}


如果我做错了什么,我很抱歉,这也是我第一次使用堆栈溢出!

rm5edbpk

rm5edbpk1#

我不熟悉Android开发,但我相信我理解你的问题。可能尝试另一种生成图像的方法,因为这可能会导致延迟。就我个人而言,我生成两个图像,并将一个放在另一个之前。当第一个到达屏幕的末尾时,我将其移动到另一个的后面,以创建具有最小延迟的循环效果。这可能不适用于Android开发。我还没有测试过,但希望这有帮助!

fcg9iug3

fcg9iug32#

**[渲染器]**提供的视频整体滞后,每10秒出现一次峰值。看起来Emulator是在CPU上单独解码视频。在播放背景视频时,您应该会看到一点GPU活动。如果它的空闲然后渲染器是你的罪魁祸首。尝试将模拟器扩展控件中的OpenGL ES renderer设置从高级更改为Desktop native OpenGL。需要重新启动仿真程序才能使更改生效。
**[编解码器]**编码格式太重或比特率高于正常可能会导致此问题。尝试较轻的格式。HEVC非常重,请尝试使用H.264 AVC Baseline配置文件对其进行编码。如果它落后于AVC基线,尝试MPEG-4 SP作为最后的手段。
**[物理设备]**请记住,最近8-10年制造的设备将具有硬件加速解码器,可以轻松播放视频。

你不必忍受这个,很长的视频是一个非常糟糕的解决方案。从我们看到的代码是好的。尝试其他物理设备。尝试不同的模拟器渲染器设置。
如果您怀疑代码中存在某些问题,您可以创建一个新项目并单独测试视频部分。

相关问题