功能主要包含5点:

1.基于ffmpeg的视频拍摄及合成;

2.自定义拍摄按钮, 长按放大并且显示拍摄进度;

3.自定义view, 实现手绘涂鸦;

4.自定义可触摸旋转缩放位移的表情文字view;

5.基于ffmpeg的图片和视频合成处理.复制代码

界面风格高仿微信, 只不过微信的编辑处理是作用于图片, 而我们的是基于视频, 所以如果你有需求, 把视频编辑处理换成图片编辑, 更是简单.

1.实现使用ffmpeg录制视频

首先导入lib库和ffmpeg的录制java文件, 我使用的是第三方VCamera封装的ffmpeg, 他没有jar包, 所以需要将con.yixia包下的所有文件都copy过来,

然后在application里面初始化VCamera:

这个时候, 你就可以在SurfaceView上看见拍摄预览界面了,

然后mMediaRecorder.startRecord()拍摄视频,

调用mMediaRecorder.stopRecord()停止录制视频,

因为拍摄出来的文件是ts视频流, 所以还要调用mMediaRecorder.startEncoding()开始合成MP4视频文件.

MediaRecorderBase类还可以设置视频各个参数, 如:

2.自定义拍摄按钮,

长按放大并且显示拍摄进度

自定义RecordedButton继承View, 在onDraw里分三部分绘制:

在拍摄模式下, 改变radius(半径), 达到放大或者缩小外圈和内圈圆的效果, 不断增加girth值达到显示拍摄进度的效果, 是不是很简单.

3.自定义view,

实现手绘涂鸦

自定义TuyaView继承View, 重写onTouch(), 在手指点下和移动时实时绘制触摸轨迹:

在手指按下时创建new Path()对象, 记录本次手指触摸移动轨迹, 并且实时调用invalidate() 达到不断调用onDraw()的目的, 然后使用canvas.drawPath(path,paint)绘制触摸路径, 是不是非常简单.

4.自定义可触摸旋转缩放位移的表情文字view

这个view稍微有点麻烦, 但我单独写了一篇文章点击跳转, 非常详细的讲解了这个view, 而且封装的非常好, 只要addView到布局中就可以使用了, 大家可以点击链接过去看一下.

5.基于ffmpeg的图片和视频合成处理

这也是demo的最后一步, 将涂鸦,和表情文字全部合成到视频当中, 首先是得到需要合成的图片, 我们可以通过view.draw(Canvas canvas),得到布局的bitmap:

然后通过ffmpeg来执行图片和视频的合成, 具体语句是这样的:

ffmpeg -i videoPath -i imagePath -filter_complex overlay=0:0 -vcodec libx264 -profile:v baseline -preset ultrafast -b:v 3000k -g 25 -f mp4 outPath

我把参数讲解一下: videoPath代表你要编辑视频的路径

imagePath代表你要合成的图片路径

outPath是合成之后的输出视频路径

这些是我们需要替换的参数至于一些别的, 例如:

overlay=0:0表示图片坐标位置, 0:0表示x轴=0,y轴=0

-vcodec后面表示视频输出格式, 3000k码率, 25帧数, 总之ffmpeg的参数还有很多, 如果感兴趣可以去ffmpeg官网看命令大全.

向UtilityAdapter.FFmpegRun()里传入ffmpeg语句就可以执行了, 返回值 int , 如果等于0就是成功, 非0则是失败, FFmpegRun()方法的第一参数如果传入空字符串就是异步执行视频处理, 否则就是同步执行, 这点要注意.

如果这篇文章对大家有所帮助,

希望可以点一下star哦, 我会经常在上面分享我工作中遇到的问题和酷炫的特效实现.

android+高仿视频录制,高仿微信视频录制, 涂鸦水印添加, 基于 ffmpeg 视频编辑相关推荐

  1. 微信小程序图片水印添加

    js getCanvasOne(url) {var mycenter = 0 //文字左右居中显示var myheight = 0 //文字高度const that = thisconst query ...

  2. ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式

    ffmpeg 视频格式转换和宽高转换 制作自己想要的数据格式 命令如下: ffmpeg -y -i Titanic.mkv -s 640*480 out.h264 运行效果: 一般的 使用 ffmpe ...

  3. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展

    本文由"猫爸iYao"原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能  ▲ Q ...

  4. android仿微信拍摄视频教程,仿微信视频拍摄UI, 基于ffmpeg的视频录制编辑(上)

    本项目所使用的so库是VCamera,个人免费, 禁止商用,只用作demo演示 因为最近项目做了关于视频拍摄和视频处理的需求, 所以特来分享一下, 做了一个基于微信录制,  分析ffmpeg视频编辑的 ...

  5. android微信视频查看源代码,Android仿微信视频拍摄UI, 基于ffmpeg的视频录制编辑

    功能主要包含5点: 1.基于ffmpeg的视频拍摄及合成; 2.自定义拍摄按钮, 长按放大并且显示拍摄进度; 3.自定义view, 实现手绘涂鸦; 4.自定义可触摸旋转缩放位移的表情文字view; 5 ...

  6. android 调出键盘表情_android高仿微信表情输入与键盘输入代码(详细实现分析)

    表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决 ...

  7. android抖音loading动画,高仿抖音视频加载动画

    动画效果: loadingView.gif 由于GIF图压缩的问题看起来不好看,在真机和模拟器上看是没有问题的 这个动画实现起来还是很容易的,原理其实就是利用CGAffineTransformScal ...

  8. android 调出键盘表情_Android高仿微信表情输入与键盘输入详解

    使用到表情与键盘的切换输入,需要多表情的只需要实现自己的表情fragment界面,然后根据工厂类获取即可,上图看效果: 效果还不错吧,哈哈.下面开始介绍: 本篇主要分析的核心类EmotionKeybo ...

  9. iOS视频直播:高仿喵播APP

    效果图 gif1 gif2 由于licecap录制的GIF失帧太严重, 都模糊掉了, 再放两张高清截图 png1 png2 前言 今年三月份,斗鱼获腾讯领投的1亿美元融资的消息被各大平台报道转载,在电 ...

最新文章

  1. CPU,GPU,Memory调度
  2. 非关系型数据库(NoSQL)
  3. Linux系统普通用户切换省略输入用户名密码
  4. sublime快捷键整理
  5. java剪切txt文件_用Java把剪切板的内容实时保存到txt
  6. 利用mycat实现mysql数据库读写分离
  7. Linux内核网络协议栈:udp数据包发送(源码解读)
  8. MFC初探 —— Editcontrol实现多行显示
  9. MyBatis3-SqlSessionDaoSupport的使用
  10. linux soc 程序崩溃,SOC、FLCK和内存之间的关系,以3900X+X570为例(更新PCIE4.0)
  11. Atitit webdav应用场景 提升效率 小型数据管理 目录 1.1. 显示datalist 1 1.2. Ajax填充数据 1 1.3. 编辑数据 2 1.1.显示datalist
  12. 热门好用的空号检测API推荐
  13. MIDIPLUS STUDIO M S 2 4声卡安装调试教程
  14. 计算机中1kb等于多少字节,1kb等于多少个字节
  15. 手机如何访问电脑局域网文件共享服务器,手机怎么访问局域网电脑共享文件
  16. 两台虚拟机互相ping通(互相通讯)
  17. 利用FME创建3D模型之从Excel到3D
  18. (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  19. 搜狗输入法如何输入直角引号(「『』」 )
  20. 国考计算机专业知识大纲,2021国考专业科目考试大纲(计算机类)考什么内容?...

热门文章

  1. 面试笔试整理3:深度学习机器学习面试问题准备(必会)
  2. 关于Oracle数据库如何查询非当前用户名命名空间下的表不需要写ower直接from 表名
  3. 计算两个时间戳之间的时间差
  4. python中var_【Python金融量化】VaR系列(一):HS,WHS,RM方法估计VaR
  5. 虹科教您|实现OPC UA C/S快速部署及数据采集
  6. NGS基础:测序原始数据下载
  7. 浏览器无法访问hdfs界面问题
  8. java导出word纸张方向_java导出word的几种方式
  9. 删除计算机硬盘中的文件,硬盘上数据如何彻底删除 硬盘上数据彻底删除方法【详解】...
  10. 认识物联网系列——物联网架构