关于 Android 8.0 的录像 quota exceeded 异常

2023-11-09

这是个之前从没碰到过的问题, 记录一下这无语的跟踪过程 ...

两周前的某一天, 忽然一封邮件转过来, 测试那边描述手机录像在内置卡录满状态下会出问题, 录出的文件播不了;  按说, 磁盘录满根本不是个大事, Camera APK 会统计内置卡或者外置卡的剩余可用空间, 减掉个保留值设下来, 然后 MPEG4Writer 还会按这个值配个 95% 的折扣 mMaxFileSizeLimitBytes, 录像过程中会时刻比对录像的临时文件 .mp4.tmp 和这个 mMaxFileSizeLimitBytes, 随时终止录像并上报 MAX_FILESIZE_REACHED 的通知,  所以只要录像时不会有其他进程后台写文件的状况, 是肯定不会出现录像文件写失败的;  这套处理逻辑早已成熟, 直可追溯到上上届常委时期;  而且现在 google 还为了磁盘录满, 增加了 splitting 的处理, 无懈可击 ... // MAGIC1. DO NOT TOUCH.  BY 冗戈微言  http://blog.csdn.net/leonxu_sjtu/
说了那么多背景,那测试反映的到底是什么情况? 

自己试了下, 将内置卡塞到接近塞满,  此时开始录像, 录出的文件确实播不了, 体现在这 mp4 文件的 moov header 在偏移量第 0x1000 后,  全部是零数据,  仿佛写不进去:


看到 0x1000 这么整整齐齐, 很可能是文件系统的锅啊, 于是在 MPEG4Writer 代码里调用 write 的地方加了 log :// MAGIC2. DO NOT TOUCH.  BY 冗戈微言 http://blog.csdn.net/leonxu_sjtu/

size_t MPEG4Writer::write(
        const void *ptr, size_t size, size_t nmemb) {
...
    } else {
        ALOGW("mWriteMoovBoxToMemory false - write size=%lld, nmemb=%lld", (long long)size,(long long)nmemb);
        ssize_t rt;
        rt = ::write(mFd, ptr, size * nmemb);
        ALOGW("mWriteMoovBoxToMemory write rt = %lld, errno = %d-%s", (long long)rt, errno, strerror(errno));
        mOffset += bytes;
    }
    return bytes;
}


对应的 log :
01-11 06:18:22.362  170
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 Android 8.0 的录像 quota exceeded 异常 的相关文章

  • 从可打开的 URI 将本机 fd int 传递到 FFMPEG

    我正在尝试从打开一个文件描述符CATEGORY OPENABLE来自存储访问框架的 URI 我首先尝试使用 SD 卡上的文件 我已经可以使用以下命令将其解析为文件路径 data列并打开 我试图避免这样做 而是使用文件描述符 我得到的原生 i
  • Android val 无法重新分配

    我定义了一个名为notes的变量 当我尝试从方法修改它时 android studio说 val 不能重新分配 但是 如果我像这样访问变量 我可以修改它 this notes class NoteAdapter var context Co
  • 在 Android 中录制、保存和播放视频

    我正在尝试制作一个使用相机应用程序录制视频的应用程序 然后将该视频保存在 SD 卡上 以便我可以播放它 我有一些代码 但我不知道如何继续 因为我是 Android 初学者 我的活动 public class Camcorder extend
  • 使用 shouldInterceptRequest 阻止数据加载

    虽然这个问题已经被问过好几次了 但与我的问题真正相关的唯一问题是这个 我可以使用 shouldInterceptRequest 来阻止 Android 中的特定调用吗 https stackoverflow com questions 16
  • 无法绑定到调试器的本地 XXXX

    我不断得到Can t bind to local XXXX for debugger控制台中的消息 但不适用于 1 个端口 适用于所有随机端口 我已经完成了中所述的操作这个问题 https stackoverflow com questio
  • CollapsingToolbarLayout 无法识别滚动 fling

    我创建了一个简单的折叠工具栏布局它就像一个魅力 我的问题是 如果我尝试在嵌套滚动视图 当我松开手指时它就会停止 正常的滚动就像它应该的那样工作 我的活动代码是不变 gt 自动生成空活动 我只是单击了 android studio 中的 创建
  • Android - 缩放和压缩位图

    我正在开发一个 Android 应用程序 它具有相机捕捉和照片上传功能 如果设备具有高分辨率相机 则捕获的图像尺寸将非常大 1 3MB或更大 由于应用程序需要将此图像上传到服务器 因此我需要在上传之前压缩图像 例如 如果相机拍摄了 1920
  • 覆盖服务 - 按下返回按钮

    我怎样才能做到这一点 目前的解决方案 我启动了一个透明的活动 捕获后按 将其转发到我的服务 然后自行关闭 但此活动将在当前正在运行的活动中可见 因此这不是一个非常漂亮的解决方案 看到的解决方案 我见过一个应用程序确实可以捕获服务中的后按 而
  • Android 如何知道手电筒是否打开

    我正在使用 CameraManager 和 CameraCharacteristics 我想知道如何检查手电筒是否打开 试试这段代码 public boolean FlashStatus Camera Parameters paramete
  • 即使在 Scaffold 中定义了 BottomModalSheet 小部件,Flutter 中也未找到 Scaffold 错误

    我试图为测试应用程序实现 BottomModalSheet 但每次都会弹出同样的错误 说找不到脚手架 该应用程序的代码如下 该错误表明 Scaffold 是由 MaterialApp Widget 实现的 因此我删除了 MaterialAp
  • 问题:将大数据传递给第二个 Activity

    我有一个奇怪的问题 我在网上浏览但没有找到答案 我仍然是android编程的初学者 那么让我们开始吧 我想做的就是用一些数据调用第二个活动 它适用于小数据 但如果数据变大 第二个 Activity 将不会显示 第一个 Activity 将完
  • 如何在单击时使图像抖动/摆动?

    我有一个图像按钮 我想在触摸它时摇动 摆动 我希望它能够像 iPhone 应用程序图标在被长时间按下时那样摆动 Thanks 尝试使用这个
  • 如何在 Android (Xamarin) 中以编程方式从当前主题获取颜色

    我需要以编程方式获取一些默认主题颜色值 例如 windowBackground colorPrimary 我正在执行活动中的代码 我的目标安卓API 为 21 我正在使用一个Theme Material theme 我试过了 var att
  • Gradle 警告:不推荐使用variant.getOutputFile() 和variant.setOutputFile()

    我在 Android 应用程序项目中使用以下简化配置 android compileSdkVersion 20 buildToolsVersion 20 0 0 defaultConfig minSdkVersion 8 targetSdk
  • 在 libgdx 中截取屏幕截图

    我有一个应用程序 我想在其中截取游戏屏幕的屏幕截图并将其保存为图像并上传到 Facebook 我正在使用 Libgdx 我的重点是 android 谁能帮助我如何以编程方式截取游戏屏幕并将其另存为图像 现在相当容易 Libgdx提供了一个例
  • 如何在 Android 键盘中包含建议

    我正在开发 Android 软键盘 我已经创建了键盘布局 但不知道如何包含在 EditText 中键入一些单词时出现的建议 例如 如果我写 在 中 已知 和 已知 将显示在建议中 所以我的问题是 1 如何在 Android 软键盘中包含建议
  • 将文本文件写入 SD 卡失败

    我遇到了一个奇怪的问题 我的应用程序可以将一个简单的文本文件写入 SD 卡 有时它对某些人有效 但对其他人无效 我不知道为什么 对于某些人来说 如果他们输入一些字符 例如 在文件等中 我似乎无法重现它 因为我没有遇到任何麻烦 但这是处理文件
  • 解决SecurityException:权限拒绝:启动意图。我需要什么许可?

    我想从应用程序打开游戏商店 在三星手机上还好 但在一加手机上却失败了 我不知道在哪里alibaba来自 真奇怪 异常 java lang SecurityException 权限拒绝 启动意图 act android intent acti
  • DDMS 未显示来自设备的线程

    我想使用以下命令检查我的 Android 应用程序中是否存在内存泄漏DDMS特色于Eclipse 当我启动模拟设备时 线程会正确显示模拟设备 从 8600 及更高版本开始 然而 当我将 Droid 连接到 PC 时 该设备在 DDMS 中显
  • Ionic 3 Deeplinking - 从 URL 启动应用程序

    我正在使用 Ionic 开发一个跨平台应用程序 当尝试实现深度链接时 我安装了一个名为 Ionic Native 插件深层链接 我运行了这些命令 ionic cordova plugin add ionic plugin deeplinks

随机推荐

  • 【信息系统项目管理师】十大管理——1、整合管理

    十大管理 1 整合管理 项目背景 项目概况 2021年6月 我有幸作为项目经理主持了 某省广电网络工程资源管理系统 项目的建设工作 该项目中标金额为888万元 建设工期为5年 该项目是该省广电网络公司的重点项目 该项目整合并条理化广电运营商
  • 画波形图的工具

    在数字电路设计中 常常会看波形图 通过波形图来表达时序关系 波形图也是设计者直接的标准语言 比如 A模块的开发者会用波形图来表示接口的输入信号或者输出信号的时序关系 B模块 对应A模块的驱动或者接收者会根据接口时序做相应的数据传输控制 那么
  • 目标检测算法研究

    1 目标检测基本介绍 1 1 项目结构 1 2 目标检测的算法分类 1 2 1两步走的目标检测 先进行区域推荐 而后进行目标分类 代表算法 R CNN SPP net Fast R CNN Faster R CNN 1 2 2 端到端的目标
  • Python入门--数组、list

    在Python中 列表 list 是一种用于存储一组有序元素的数据类型 列表中的元素可以是数字 字符串 变量或其他任何Python对象 列表是可变的 也就是说 可以添加 删除和修改列表中的元素 下面是一些列表的基本操作示例 1 创建一个空列
  • mov edi,edi - hook api

    mov edi edi hook api 系统 windows xp 查看系统函数的反汇编代码时会发现开头有个 mov edi edi 2字节 再往前则是5个nop指令 当然这不会引人注意 可是 mov edi edi 有什么用了 上网搜索
  • 故事篇:数据库架构演变之路

    故事的开头总是这样 适逢其会 猝不及防 今天我哼着 也是黄昏的沙滩上 有着脚印两对半 在海边散步 迎面走来了一位身穿黄金甲的男子 来海边还穿这么花哨 真是个傻X 定睛一看 这不是嘉文吗 背景介绍 嘉文四世 德玛西亚皇子 是有名的高富帅 与盖
  • openwifi ap sta路由配置教程

    一 先启动AP wgd sh sysctl w net ipv4 conf all forwarding 1 sysctl w net ipv4 conf default forwarding 1 sysctl w net ipv6 con
  • RANSAC(Random Sample Consensus)对点云进行多个平面的分割并可视化(附python代码)

    使用 RANSAC Random Sample Consensus 算法对点云进行多个平面的分割 并进行可视化 下面是对代码的逐行解释 pcd o3d io read point cloud xxx pcd 从文件中读取点云数据 并将其存储
  • L1-029. 是不是太胖了

    据说一个人的标准体重应该是其身高 单位 厘米 减去100 再乘以0 9所得到的公斤数 已知市斤是公斤的两倍 现给定某人身高 请你计算其标准体重应该是多少 顺便也悄悄给自己算一下吧 输入格式 输入第一行给出一个正整数H 100 lt H lt
  • STM32F1开发指南笔记46----字库原理及汉字库创建

    随着液晶显示技术的发展和应用 越来越多的开发人员希望在自己开发的仪器中使用液晶屏幕来显示汉字 通常的汉字显示方式是 先根据所需要的汉字提取汉字点阵 譬如16x16点阵 24x24点阵等 将点阵文件存入ROM中 形成新的汉字编码 然后在使用时
  • 蓝桥杯练习——Python砖墙

    题目 你的面前有一堵矩形的 由 n 行砖块组成的砖墙 这些砖块高度相同 也就是一个单位高 但是宽度不同 每一行砖块的宽度之和相等 你现在要画一条 自顶向下 的 穿过 最少 砖块的垂线 如果你画的线只是从砖块的边缘经过 就不算穿过这块砖 你不
  • API网关

    API网关 api gateway 即 api 网关 所有的请求首先会经过这个网关 这有点类似于前端控制器模式 也有点类似于 Facade模式 如下图所示 由于所有的请求会先经过这个 api 网关 所以 可以在 这里做 权限控制 安全 负载
  • 微信小程序支付开发及问题

    一 前期准备 微信后台申请微信支付 微信支付 商务号关联 个人信息 填写 操作密码 api密钥设置 得到appid AppSecret 商户号 api密钥等 微信支付接口签名校验工具 二大概流程 1 登录 获取code 一个code只能用一
  • 练习2-2 在不使用运算符&&或

    for i 0 i lt lim 1 c getchar n c EOF i s i c 练习2 2 在不使用运算符 或 的条件下编写一个与上面的for循环语句等价的循环语句 参考代码 include
  • mysql 如何修改数据库表结构_MySQL数据库如何修改表结构

    MySQL数据库修改表结构的方法 1 使用add添加字段 使用drop删除字段 2 使用alter修改字段名 3 修改列类型 4 修改表名 5 修改表选项 6 修改列属性 MySQL数据库修改表结构的方法 1 添加与删除字段 1 添加 Al
  • ChatGLM2-6B中引入ptuning报错:AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘

    File home ai gm ChatGLM2 6B ptuning v1 main py line 411 in
  • hdoj1052 Tian Ji -- The Horse Racing(贪心算法+2)

    田忌赛马 关键在于比较的次序 首先先比较两个人最慢的马 如果田忌的马快就直接赢下一分 count 如果更慢的话就用这匹慢马去与大王最快的马比赛 count 如果相等的话 再比较两个人最快的马 如果田忌的马更快 count 反之就用田忌的慢马
  • 关于QT线程暂停、恢复、停止、重启、暂停后回收的处理

    thread h Qmutex m mutex void threadPause void threadResume thread cpp bool Flag StopThread 0 bool Flag PauseThread 0 voi
  • C#中? 、?? 、?. 、??= 的用法和说明

    一 可空类型修饰符 lt gt 引用类型能用空引用来表示一个表示一个不存在的值 但是值类型不能 例如 string str null int i null 编译报错 为了使值类型也能使用可空类型 就可以用 来表示 表现形式为 T 例如 in
  • 关于 Android 8.0 的录像 quota exceeded 异常

    这是个之前从没碰到过的问题 记录一下这无语的跟踪过程 两周前的某一天 忽然一封邮件转过来 测试那边描述手机录像在内置卡录满状态下会出问题 录出的文件播不了 按说 磁盘录满根本不是个大事 Camera APK 会统计内置卡或者外置卡的剩余可用