美文网首页
Android 视频抽帧 mediaMetadataRetrie

Android 视频抽帧 mediaMetadataRetrie

作者: 懵懵懂懂_YOYO | 来源:发表于2022-04-11 15:12 被阅读0次

最近在做视频抽帧功能,在使用MediaMetadataRetriever的setDataSource方法时,总是抛出IllegalArgumentException异常,在网络漫游很久最终总结三点原因:

1.文件路径不对

这点不用多说,首先判断下文件是否存在,然后可以用你的路径下的视频进行播放。可以播放证明文件路径没有问题。

2.文件访问权限不够

结合这两点原因我排查了一下,发现确实是我的权限不够导致的,因为我测试时使用的Android 10.0的手机,虽然我已经动态申请了权限,但是Android10对权限的管理更加严格了,主要有以下两点:

(1)、权限按单个分配,不再按组分配,以前申请了读存储卡权限,即可获得同组的读写权限,现在需要逐个申请
(2)、存储卡读写权限需要在Application的Manifest清单中声明

Android10.0 需要在AndroidManifest.xml文件中application出加上 android:requestLegacyExternalStorage="true"

3.需要动态获取权限

重点:需要用户手动允许权限

        if (Build.VERSION.SDK_INT >= 23) {
            int REQUEST_CODE_CONTACT = 101;
            String[] permissions = {Manifest.permission.RECORD_AUDIO,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
            //验证是否许可权限
            for (String str : permissions) {
                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                    //申请权限
                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                }
            }
        }

最终完美解决。

相关文章

网友评论

      本文标题:Android 视频抽帧 mediaMetadataRetrie

      本文链接:https://www.haomeiwen.com/subject/ozwisrtx.html