如何从Kotlin的录制视频中获取缩略图?

问题描述 投票:0回答:1

我是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

方法1:

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

方法2:

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

方法3:

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

方法4:

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()

您的HELP将不胜感激。谢谢。

android kotlin video thumbnails
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.