Получить первый кадр из ExoPlayer2, чтобы показать, во время загрузки останавливает игрока и показывает пустой кадр - PullRequest
0 голосов
/ 12 февраля 2020

Я написал простую реализацию видео для потоковой передачи видео с URI с помощью Google ExoPlayer2. При необходимости я могу поделиться этим кодом.

Загрузка занимает от 0,5 с до 2 секунд. В настоящее время я показываю первый кадр видео за этот период. Для этого кадра Я вручную сделал снимок экрана и поместил его в свою базу данных в формате jpeg. Это длительный процесс, и я хочу, чтобы ExoPlayer сделал это для меня.

Я нашел решение, которое может сделать снимок экрана в проигрывателе surfaceTextureListener. Но как только я настроил слушателя на это, мое видео показывалось в течение 0,5 секунды, а затем экран становился черным, а если видео не установлено, воспроизведение воспроизводится и работает нормально. onPlayerStateChanged все еще срабатывает.

private fun initializeVideo() {
        textureView.surfaceTextureListener = surfaceTextureListener
}

private var surfaceTextureListener: SurfaceTextureListener = object : SurfaceTextureListener {
    override fun onSurfaceTextureAvailable(
        surface: SurfaceTexture,
        width: Int,
        height: Int
    ) {
        val textureView = binding?.videoView?.videoSurfaceView as TextureView
        binding?.loadingFrame?.setImageBitmap(textureView.bitmap)
    }

    override fun onSurfaceTextureSizeChanged(
        surface: SurfaceTexture,
        width: Int,
        height: Int
    ) {}

    override fun onSurfaceTextureDestroyed(surface: SurfaceTexture): Boolean {
        return false
    }

    override fun onSurfaceTextureUpdated(surface: SurfaceTexture) {}
}

В xml:

app:surface_type="texture_view"

Вторая проблема заключается в том, что при просмотре растрового изображения в Android Studio отображается пустой прозрачный вид, который представляет собой высоту и ширину, определенные в XML.

enter image description here

Есть ли способ получить снимок экрана перед загрузкой или Подход отдельного файла .jpg - лучшее решение, и должен ли сервер реализовывать некоторые функции создания снимков экрана?

...