【问题标题】:How to get thumbnail from a recorded video in kotlin?如何从 kotlin 录制的视频中获取缩略图?
【发布时间】:2020-05-28 21:37:15
【问题描述】:

我是 Kotlin 的初学者,刚开始使用 Kotlin。我正在尝试从我在我的应用中录制的视频中获取缩略图。

我已经尝试了几乎所有可能的方法,但每次我都得到 NULL。

所以首先,我在清单中添加了READ_EXTERNAL_STORAGE的权限(我不知道,也许它是必需的)

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我有一个我创建的视频文件:

fun createVideoFile(): File {

        val fileName = "GameXVideo"
        val storageDir = getExternalFilesDir(Environment.DIRECTORY_MOVIES)

        return File.createTempFile(fileName, "mp4", storageDir)

    }

所以我没有将视频保存在物理存储中。录制完成后,我正在播放这段录制的视频,效果很好。

接下来我想要的是缩略图,我已经尝试了很多已经给出的答案,但我无法完成。这是我已经尝试过的:

val videoFile = intent.extras?.get("videoFile") as? File // getting videoFile from the intent
val videoPath = videoFile?.absolutePath // getting its absolute path
val videoUri = Uri.fromFile(videoFile) // getting its uri

方法一:

val bMap = ThumbnailUtils.createVideoThumbnail(videoPath!!, MediaStore.Video.Thumbnails.MICRO_KIND) // gives null

方法二:

val mMMR = MediaMetadataRetriever()
mMMR.setDataSource(this, videoUri)
val bmp = mMMR.frameAtTime // also gives null

方法三:

val asd: InputStream? = contentResolver.openInputStream(videoUri)
val bmap2 = BitmapFactory.decodeStream(asd)
asd?.close()

方法四:

val filePathColumn = arrayOf(MediaStore.Images.Media.DATA)
val cursor = this.contentResolver.query(videoUri, filePathColumn, null, null, null)
cursor?.moveToFirst()
val columnIndex = cursor?.getColumnIndex(filePathColumn[0])
val picturePath = cursor?.getString(columnIndex!!)
cursor?.close()

您的帮助将不胜感激。谢谢。

【问题讨论】:

  • 为什么不使用 Glide 库?以下是如何使用futurestud.io/tutorials/glide-thumbnails的指南
  • @Rajnishsuryavanshi 是的,它与 Glide 一起工作......非常感谢。我想在不使用任何第三方库的情况下完成这个缩略图工作,但除了这个 Glide 之外,我没有看到任何其他方式。所以我现在会坚持下去。 :-)

标签: android kotlin video thumbnails


【解决方案1】:

【讨论】:

  • 我认为 (loadThumbnail) 用于较旧的 android API。使用时我得到:调用需要 API 级别 Q(当前最小值为 21)。我不想再降低 API 级别了。所以我想这个答案不适合我...... :-/
猜你喜欢
  • 2013-02-22
  • 2011-10-19
  • 2013-06-05
  • 2020-05-16
  • 1970-01-01
  • 2011-05-25
  • 2011-05-12
  • 2010-11-19
  • 2012-03-28
相关资源
最近更新 更多