android - 来自 MediaMetadataRetriever 的 getScaledFrameAtTime 太慢而无法在 Android 10 中返回位图

标签 android android-10.0 mediametadataretriever

使用元数据检索器从视频中获取位图在 Android 10 中需要花费太多时间,但在 Android 10 以下效果很好。仅在 Android 10 中面临此问题。 getFrameAtTimegetScaledFrameAtTime 在 Android 10 中都很慢。

这里我添加了用于获取位图形式视频的代码

  Bitmap bitmap = null;
    MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
    mediaMetadataRetriever.setDataSource(context, videoUri);
    bitmap = mediaMetadataRetriever.getScaledFrameAtTime( ONE_SECOND_IN_MILLI, MediaMetadataRetriever.OPTION_CLOSEST_SYNC,THUMB_WIDTH,THUMB_HEIGHT);

构建gradle sdk版本

   compileSdkVersion = 28
   def nativeBuildSystem = 'none'
     defaultConfig {
        applicationId "com.example.example"
        minSdkVersion 26
        targetSdkVersion 28
    ...
    }

最佳答案

Android P的bug,比如华为P30,最新已经修复。 Uri 转换为文件是一种有效的方法

关于android - 来自 MediaMetadataRetriever 的 getScaledFrameAtTime 太慢而无法在 Android 10 中返回位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58388606/

相关文章:

android - 媒体元数据检索器 JNI (14060) : getFrameAtTime: videoFrame is a NULL pointer(Android)

android - Proguard 返回错误代码 1。(文件名、目录名或卷标语法不正确)

android - 以编程方式将视频上传到 Google 云端硬盘 (Android API)

android - 从图库中选择视频时,Android 10 像素 2 中出现无效的列纬度错误

android - Android 10 上的自定义通知中没有展开按钮

java - 在 Android 中获取视频的精确帧

java - 从图库中选择图像并在 Android 应用程序中拍照

android - 如果没有 Google Play 服务的帮助,我如何让 TLS 1.2 在 Android 4.4 中工作?

android - Android 实际上在哪里调用 "ip link"或 "ifconfig"来启动界面?

java - 尝试使用 java/android 从 url 流获取元数据时出错