Я хочу создать миниатюру для определенного периода времени из удаленного URL-адреса HLS. например: https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8
Я попробовал MediaMetadataRetriever, но он не работает для прямых трансляций (HLS).
любой фрагмент кода или библиотека приветствуются, спасибо
Библиотека 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
Я понял, нам нужно использовать команду val = arrayOf( "-sseof", "-1", "-i", url, "-frames:v", "1", "-y", outputImage )
Знаете ли вы, как создать миниатюру для последнего таймфрейма вместо передачи метки времени?