美文网首页
安卓 11 (R,API level 30) 视频录制存储相关适

安卓 11 (R,API level 30) 视频录制存储相关适

作者: 蜂鸟之歌 | 来源:发表于2021-10-28 14:02 被阅读0次

    问题描述:安卓 11 使用 MediaRecorder 录制视频,由于新的分区存储特性(Scoped Storage,APP 产生的文件只能通过 MediaStore API 写入磁盘),存储路径无法直接使用外部 SD 卡的路径。

    问题解决思路:

    a. 使用应用内部存储路径 getExternalFilesDir(null), 真实路径为 "/storage/emulated/0/Android/data/<your package name>/"

    • 视频录制完成后可以根据需要再写入分区存储。

    • 由于内部存储路径又导致 MediaMetadataRetriever 获取视频第一帧的功能无法使用

      • 解决思路:
      media.setDataSource(getContentResolver().openFileDescriptor(Uri.fromFile(new File(urlPath)), "r").getFileDescriptor());
      

    b. MediaRecorder 设置存储路径的方法 setOutputFile 可以接受 FileDescriptor 对象,利用 ContentResolver 和 MediaStore 获得外部存储路径的 FileDescriptor,就可以使用外部分区存储的路径录制了。

    其他

    a. 相关链接:安卓开发者文档-访问共享存储空间中的媒体文件
    b. 相关链接:关于Android Q分区存储的一些适配心得
    c. 相关链接:Android Q, how to save audio recording with MediaStore with the correct file name?
    d. 个人网站:蜂鸟之歌

    相关文章

      网友评论

          本文标题:安卓 11 (R,API level 30) 视频录制存储相关适

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