如何将封面艺术设置为mp4媒体文件jcodec-android

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

我正在使用jcodec

我正在尝试将cover art设置为mp4文件但是,它不起作用。我所做的就是追随。

fun AppCompatActivity.setAlbumCover(filePath: String) {
    try {
        val file = File(filePath)
        val bitmap = ThumbnailUtils.createVideoThumbnail(file.absolutePath, MediaStore.Video.Thumbnails.MINI_KIND)
        if (bitmap != null) {
            val byteArrayOutputStream = ByteArrayOutputStream()
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream)
            val byteArray = byteArrayOutputStream.toByteArray()
            val base64Str = Base64.encodeToString(byteArray, Base64.DEFAULT)
            if (base64Str != null) {
                val mediaMeta = MetadataEditor.createFrom(file)
                if (mediaMeta != null) {
                    val meta = mediaMeta.keyedMeta
                    if (meta != null) {
                        meta["coverart"] = MetaValue.createString(base64Str)
                    }
                    mediaMeta.save(false)
                }
            }
        }
    } catch (e: Exception) {
        e.printStackTrace()
    }
}

之后我将这个视频上传到服务器,当我从视频thumbnailusing url加载MediaMetadataRetriever::getEmbededPicture。它应该返回byte[]而不是null

如何实现这一目标。

提前致谢。

android kotlin metadata media jcodec
1个回答
1
投票

使用Itunes元数据和代码0x636F7672。

例如:

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
coverBitmap.compress(Bitmap.CompressFormat.JPEG, 100,byteArrayOutputStream);
MetaValue coverMetaValue = MetaValue.createOther(MetaValue.TYPE_JPEG, byteArrayOutputStream.toByteArray());

MetadataEditor metadataEditor = MetadataEditor.createFrom(new File(url));
metadataEditor.getItunesMeta().put(0x636F7672 , coverMetaValue); 
metadataEditor.save(false);
© www.soinside.com 2019 - 2024. All rights reserved.