Android 录制视频添加时间水印,Android开发教程入门
static const int64_t kMax32BitFileSize = 0x3800000;//0x00ffffffffLL; // 2^32-1 : max FAT32
static const int64_t kMax32BitDuration = 0x007fffffffLL;
然后追踪到VideoActor的处理。有一个思路,就是停止的时候,进行文件保存后立即重新启动录像。
[java] view plaincopy
public void stopVideoRecordingAsync() { // TChip ZJ
// for snapshot
stopObjectTracking();
mStopVideoRecording = true;
Log.d(TAG, “stopVideoRecordingAsync() mMediaRecorderRecording=” + mMediaRecorderRecording
+ “, mRecorderBusy=” + mRecorderBusy
+ “, isVideoProcessing()” + isVideoProcessing()
+ “, mStopVideoRecording =” + mStopVideoRecording);
mVideoContext.getZoomManager().changeZoomForQuality();
mVideoContext.setSwipingEnabled(true);
mHandler.removeMessages(UPDATE_RECORD_TIME);
mVideoContext.getShutterManager().setVideoShutterMask(false);
if (isVideoProcessing()) {
return;
}
if (mRecorderBusy) { // return for recorder is busy.
return;
}
mRecorderBusy = true;
mRecordingView.hide();
if (mMediaRecorderRecording) {
mVideoContext.getShutterManager().setVideoShutterEnabled(false);
if (mStoppingAction != STOP_RETURN_UNVALID && mCallFromOnPause != true) {
// mVideoContext.showProgress(mVideoContext.getResources().getString(R.string.saving)); // TChip ZJ : 去掉保存UI
}
mVideoSavingTask = new SavingTask();
mVideoSavingTask.start();
} else {
mRecorderBusy = false;
releaseRecorder();
if (mStoppingAction == STOP_RETURN_UNVALID) {
doReturnToCaller(false);
}
}
}
先吃饭了,明天再看实现的可行性以及效果(是否漏秒)。
继续追踪
看了下保存的逻辑,涉及以下两处源码:
packages/apps/Camera/src/com/android/camera/manager/MMProfileManager.java
mediatek/frameworks/base/mmprofile/java/com/mediate
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
k/mmprofile/MMProfileManager.java
然后从MMProfileManager定位到MMProfile:
mediatek/frameworks/base/mmprofile/java/com/mediatek/mmprofile/MMProfile.java
这个类比较简单,加载了JNI库,再追下去就到c了。
[java] view plaincopy
public class MMProfile
{
static
{
System.loadLibrary(“mmprofile_jni”);
}
Android 录制视频添加时间水印,Android开发教程入门相关推荐
- Android 录制视频添加时间水印,不吃透都对不起自己
mStopVideoRecording = true; Log.d(TAG, "stopVideoRecordingAsync() mMediaRecorderRecording=" ...
- Android录像时添加时间水印
在网上搜索整理了下,有三篇有用的文章,原理也是一样. 实现步骤说明在这里Android 录制视频添加时间水印 上面也仅给出了步骤,具体代码在增加录像时间戳水印. camera框架介绍 可以找到.从博客 ...
- ffmpeg给视频添加时间水印
ffmpeg给视频添加时间水印 通过 drawtext 滤镜模块给视频添加时间水印 给视频添加时间水印 用来做片源调试,非常方便的查找和定位处理的哪一帧视频片源: 1. 添加本地时间水印 ffmpeg ...
- Android视频添加时间水印
由于需要在高通平台上做行车记录的功能,需要给视频加上时间水印. 网上搜索了一下方案,发现有在MTK平台做过类似功能的,参考: http://blog.csdn.net/jimbo_lee/articl ...
- 【Qt+FFmpeg】给视频添加时间水印
ffmpeg编解码中,给本地视频加上时间水印,并保存到本地,使用到的技术是ffmpeg中的avfilter库: 具体效果如下 yuv: mp4 本方法不适合摄像头解码,解码出来糊得不行,本地视频的话会 ...
- android利用EpMedia给录像添加时间水印
做出来的例子效果如下: 第一步:集成EpMedia, 步骤在大神的github上都有,地址如下: https://github.com/yangjie10930/EpMedia 添加时间水印,我的方法 ...
- Android 拍照添加时间水印
效果如下图 : 1.拍照 // 非空判断 拍照if (mCamera0 != null){mCamera0.takePicture(null, null, jpeg0); // 1 front} 2. ...
- Android录制视频-nv21转nv12姿势(libyuv使用)
Android录制视频-nv21转nv12姿势(libyuv使用) 前言 为什么需要转化? libyuv简介 实际使用 1.集成 2.修改代码 3.添加方法 4.项目中使用 总结 前言 近期接触项目当 ...
- Android录制视频,仿微信小视频录制(一)
Android录制视频,第一部分自定义控件 简述 公司有一个录制视频并上传的功能,录制视频具体使用类如下:硬件控制使用Camera,视频录制的格式音频等具体配置与录制使用MediaRecorder,预 ...
- 抖音app开发时,在录制视频添加背景音乐功能实现流程
抖音app之所以"横扫"整个短视频领域,最主要的还是占据了短视频玩法的"先机",其中在录制视频时添加背景音乐,是很多用户都非常喜欢的步骤,但是在抖音app开发时 ...
最新文章
- IBM Java多线程 - 3.无处不在的线程
- MATLAB实战系列(七)头脑风暴优化(BSO)算法求解旅行商问题(TSP)
- 服务注册与发现用mysql_yeasul: 轻量级服务注册与发现中心,具有健康检查功能。...
- mysql行复制_MySQL复制(一)--复制概述
- Unity 2018.3.1 SyncVar没有同步服务器变量
- 数据库和数据仓库区别
- fragment in UI5 Smart Template and directive in Angular
- JQuery validate 各项验证规则讲解
- 硬盘读写测试工具_硬盘测速工具:Blackmagic Disk Speed Test Mac
- ORACLE行转列通用过程(转)
- 香港科技大学TensorFlow速成(1)
- Junit + Mockito 使用资料整理
- 目标检测 YOLO 系列:快速迭代 YOLO v5
- 西北工业大学21计算机考研,研友分享:西北工业大学计算机考研血泪史
- 嵌入式linux软件数据参数保存的三种方式
- LVM -逻辑卷管理
- 华科2020计算机专业录取线,华中科技大学2020录取分数线是多少
- 【Linux】-- Mysql(2) : 创建数据库和数据表
- 颜色帮你缓解职场压力 给你的心情换个色
- Scrapy 实战之爬取妹子图