Как создать миниатюру из удаленного URL-адреса HLS (*.m3u8) для Android

Я хочу создать миниатюру для определенного периода времени из удаленного URL-адреса HLS. например: https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8

Я попробовал MediaMetadataRetriever, но он не работает для прямых трансляций (HLS).

любой фрагмент кода или библиотека приветствуются, спасибо

0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Библиотека FFmpeg может извлекать миниатюру из определенного видеокадра.

Используйте следующую функцию для создания миниатюры:

private fun generateThumbnailFromHls(url: String, timestamp: String, outputImage: String) {
        val command = arrayOf(
            "-i", url,
            "-ss", timestamp,
            "-vframes", "1",
            "-q:v", "2",
            "-y", outputImage
        )

        FFmpegKit.executeAsync(command.joinToString(" ")) { session ->
            val returnCode = session.returnCode
            if (returnCode.isValueSuccess) {
                Log.d("FFmpeg", "Thumbnail saved to $outputImage")
            } else {
                Log.e("FFmpeg", "Error occurred: ${session.failStackTrace}")
            }
        }
    }

Не забудьте добавить FFmpeg в свое приложение: build.gradle

Знаете ли вы, как создать миниатюру для последнего таймфрейма вместо передачи метки времени?

Ashwin Khadgi 03.06.2024 17:17

Я понял, нам нужно использовать команду val = arrayOf( "-sseof", "-1", "-i", url, "-frames:v", "1", "-y", outputImage )

Ashwin Khadgi 03.06.2024 18:39

Другие вопросы по теме