# yueWater **Repository Path**: bzsome_admin/yue-water ## Basic Information - **Project Name**: yueWater - **Description**: No description available - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-08-25 - **Last Updated**: 2025-01-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # YuvWater android camera 视频水印 详情见博客:https://blog.csdn.net/u010521645/article/details/85166237 视频录制目录: /sdcard/yuvVideo ,请手动在设置加相机和存储权限。 如果添加其它的文字水印?如yyyy年mm月dd日 0、右上角进生成yuv页,然后画你想添加的文字,得到文字年月日的yuv数组 1、在YuvOsdUtils.c 的initOsd 方法中,把生成的年月日数组添加到mNumArrays中,参考数字的添加方式 2、在getIndex中,根据jchar c 返回index。这里的index就是添加的index,中文无法用c='年'方式,你需要debug 获取到中文对应的数字 ## 参考内容 https://github.com/Zihao-Wu/YuvWater.git ## 设计说明 ### MediaCodec编码器 有两种编码方式:同步编码和异步编码 - 同步编码:while一直循环读取input和output - 异步编码:重新回调方法读取input和output,支持sdk23及以上 ## 更新日志 - 录像界面横屏布局 - 实视频的录制,且正常播放 - 实现录像添加水印,并实时在界面上预览 - 添加播放视频按钮,界面显示视频保存路径 - 引入libyuv实现前置摄像头图像的翻转 - 通过加锁解决MediaCodec编码器异常 - 切换至后台暂停录像,返回前台可手动继续录像 - 添加录像和存储的权限请求 - 新增屏幕常亮 - 修复音频的音速过快 - 项目结构重构 - 完成音频和视频的继续录制 ## 修复日志 - 修复无法停止录像 产生原因:handleMessage处理消息MSG_STOP_MUXER,releaseManager里面又嵌套了handler.sendMsg - 生成的视频为镜像 -前置摄像头本身导致的 - 预览的图像绿屏 nv12转bitmap方法转换错误,改为nv12ToBitmap即可 - 停止录像时崩溃 MediaCodec编码器停止,inputBuffer无法写入数据 - 无法添加中文水印 - 添加音频,音速过快 mimeType值改为audio/3gpp - 第二次录制,视频长度异常 停止录制的逻辑有问题,未清理完数据 不需要自动设置.presentationTimeUs,设置后导致音频变长 - 音频的暂停录制 从日志打印可以看出,音频与视频时间不对应 - 多次测试无法写入音频数据 错误关键信息;pushBuffer called before start 找到第一次打印错误的位置,向上查找错误。错误信息:do not support out of order frames (timestamp: 4180379 < last: 4241842 for Audio track - 暂停录制录制音频无法继续录制 同步锁导致,frameBytes.take()为阻塞状态!不应该在同步锁之中 - 内存溢出错误 inputBuffer.put(outData): java.nio.BufferOverflowException mRecorder.read 读取的buffer大小必须创建AudioRecord的buffer要小 - 音频有破音 采样率越高比特率应该越高,建议提高比特率 - 动态视频马赛克 视频帧时间应该为采集时间