翻看了一下自己的上一篇博客,7月5号写的......,瞬间不高兴了,写博客贵在坚持,而自己在这段时间确松懈下来了,实在不应该呀!罪过罪过!

最近这一段时间内,公司的项目迭代更新需要添加新的功能包括:视频的录制和压缩上传等....,这些功能中 视频压缩上传不是很好解决。大概花了我一周左右的时间去研究和写demo.过程是痛苦的,最终黄天不负有心人啊,还是弄出来了。测试结果:录制5分钟 77M  压缩之后 11M 左右,并且视频的清晰度和原视频的清晰度并没有什么差别。接下来我将直接给大家说一下我是怎么实现的:

使用ffmpeg4android 实现视频的压缩

在进行android压缩上传的相关搜索中,提到最多的一个词就是FFMPEG,那么什么是FFMPEG呢?FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。而android目前解决视频的剪切和压缩的话好像就只能是用FFMEG。ffmepg 是在linux上写的,需要运行linux 命令进行进行视频的操作的。FFMPEG FOR ANDROID 你会查到相关的ffmpeg 移植都android 上的相关资料。不过我并不是采用的这种方法解决的问题,说实话上面这种方法,编译过程还是相当复杂,我采用的是一个第三方开源库也就是 ffmpeg4android。 ffmpeg4android 你只需使用java语言去操作linux命令即可,无须考虑C语言和NDK。官方网址:http://androidwarzone.blogspot.co.il/2011/12/ffmpeg4android.html。大家可以在这上面下载最新库接下来我会向大家介绍一些命令:

(1)最简单常规命令:

ffmpeg -y -i /sdcard/videokit/in.mp4 -strict experimental -s 160x120 -r 25 -vcodec mpeg4 -b 150k -ab 48000 -ac 2 -ar 22050 /sdcard/videokit/out.mp4

其中: -y -i 后接录制好的视频地址, -strict experiment  就是开启一些实验性的功能。 -s 输出的分辨率 如 640*480 480*480 -r 视频的帧数 -vcodec 视频编码-ab 128(音频数据流量,一般选择32、64、96、128) ac 声道 1 单声道 2 双声道 -ar 音频采样率。 一般的话控制视频输出质量参数 - s -b 增大-s 和 -b 都会提高视频的输出质量,当然相应的视频的size也会增大。

(2)截取视频特定时间的图片:
ffmpeg -y -i /sdcard/videokit/in.mp4 -strict experimental -an -r 1/2 -ss 00:00:00.000 -t 00:00:03 /sdcard/videokit/filename%03d.jpg

其中: -ss 视频开始

(3)视频裁剪:
ffmpeg -y -i /sdcard/videokit/short.mp4 -strict experimental -vf crop=100:100:0:0  -r 15 -aspect 1:1 -ab 12288 -vcodec mpeg4 -b 2097152 -sample_fmt s16 /sdcard/videokit/out.mp4

其中: crop里的参数依次为: 宽度,高度,left(距离左上角坐标),top(距离顶下角坐标)

(4)添加水印:

String[] complexCommand = {"ffmpeg","-y" ,"-i", "/sdcard/videokit/in.mp4","-strict","experimental", "-vf", "movie=/sdcard/videokit/watermark.png [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]","-s", "320x240","-r", "30", "-b", "15496k", "-vcodec", "mpeg4","-ab", "48000", "-ac", "2", "-ar", "22050", "/sdcard/videokit/out.mp4"};

容易出现的错误:

(1) 需要注意的是这些命令之间每个参数和值之间有且只有一个空格,不然运行程序就会提示Command validation failed.(无效命令)

(2)同学们会发现不管怎么运行某些命令都会出错,如运行如下命令就会出错:

ffmpeg -y -i /sdcard/videokit/in.mp4 -strict experimental -vcodeclibx264 -preset ultrafast -crf 24 -acodec aac -ar 44100 -ac 2 -b:a 96k -s 320x240 -aspect 4:3 /sdcard/videokit/out3.mp4。一般命令中出现红字部分就会出错。这是由于libvideokit.so中并未集成x264编码造成的 这时候解决办法如下:

(1)点击下载extras_xx.zip

(2)解压压缩包,将

          -- armeabi-v7a
               -- libvideokit.so.full_with_x264 文件重命名为 libvideokit.so 替换掉下载好的库的 armeabi-v7a中的 libvideokit.so ,重新编译即可运行上面命令了。

最后的话我罗列出我的写的项目中使用到的command:

 commandStr = "ffmpeg -y -i " + url + " -strict experimental -vf crop=480:480:0:0 -r 30 -aspect 1:1 -ab 44100 -ac 1 -ar 22050 -vcodec libx264 -preset fast -crf 26 " + demoVideoFolder + "video-out.mp4" + " -r 1/3 -ss 00:00:00.000 -t 00:00:03 " + demoVideoFolder + "cover.jpg";

这个命令包括 视频剪切 压缩  以及 截取图片。77M大概能压缩到11M左右。

ffmpeg 参数讲解链接地址:http://www.cnblogs.com/chen1987lei/archive/2010/12/03/1895242.html

ffmpeg 视频压缩相关参数设链接地址:https://segmentfault.com/a/1190000002502526   (crf 这个参数一定要注意,在上述命令中我设置的26 ,如果同学想要更低的压缩的话28也行,再低的话,视频质量上就会有明显的不同)

下载库的话需要翻墙 ,csdn只允许上传小于70M的文件,没有办法给大家上传到csdn了,见谅!下载地址:http://androidwarzone.blogspot.co.il/2011/12/ffmpeg4android.html    在使用过程中有什么疑问可留言!

使用FFmpeg4android 实现视频 水印 剪切 压缩 旋转相关推荐

  1. FFmpeg简述,源码分析,录制/压缩/水印/剪切/旋转/滤镜/美颜/上传视频等(CPU软编码和解码)

    > ffmpeg源码分析 ffmpeg源码简析(一)结构总览- https://blog.csdn.net/Louis_815/article/details/79621056 FFmpeg的库 ...

  2. OpenGL实现物体动画和视频特效(视频水印、美白、滤镜等)

    1.OpenGL实现视频的水印.滤镜?OpenGL实现视频的剪裁.旋转? 2.2D/3D物体的 旋转,平移,缩放? OpenGL图片滤镜与视频滤镜? 矩阵(Matrix)是一个按照长方阵列排列的复数或 ...

  3. 利用FFmpeg玩转Android视频录制与压缩(二)

    请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个 ...

  4. 用FFmpeg玩转Android视频录制与压缩

    [置顶] 利用FFmpeg玩转Android视频录制与压缩(二) 标签: Android视频采集Android视频编码Android FFmpegAndroid 视频压缩视频编码 2017-06-10 ...

  5. 利用FFmpeg玩转Android视频录制与压缩

    本文为剑西独家授权发布,剑西也是做Android多媒体开发,算是同道中人,不过他主要集中在视频压缩,利用FFmpeg,能做很多事,但是做到效果好,却不多.今天看下他的分享,剑西的blog是:http: ...

  6. 视频水印如何去除?保存的视频怎么去水印?

    视频水印如何去除?保存的视频怎么去水印?有很多人都会刷视频的,里面也有很多吸引人的视频,像这样的视频很可能就会被保存下来,但是上面的水印却让人烦恼,那么水印如何去除呢?下面我推荐一个好用的视频去水印软 ...

  7. DikDik(视频水印添加软件)官方中文版V4.3.0.0 | 影音转霸2021 | 音频水印制作软件

    DikDik是一款优秀易用的专业视频水印添加软件和音频水印制作软件,中文名叫影音转霸,可以在所见即所得的为指定视频添加视频.音频.图像.单词和字幕,还可以设置诸如视频.音频.图像.文本多种水印和.sr ...

  8. 怎么去除视频水印软件?

    去视频水印的软件哪个好?视频里面的水印怎么去掉?有很多人都会刷视频的,里面也有很多吸引人的视频,像这样的视频很可能就会被保存下来,但是上面的水印却让人烦恼,那么水印如何去除呢?下面我推荐一个好用的视频 ...

  9. 怎么消除视频水印软件?哪个软件能去除视频水印?

    视频水印怎么去除?随着制作视频的小伙伴越来越多,日常工作生活中,网络下载的视频常常会有水印,那么视频上的水印怎么去呢?下面介绍一下视频去水印的简单的方法: 搜索一下: ~~~~~~~~~~~~ 51视 ...

最新文章

  1. 在Java中如何使用transient
  2. [Python]一行代码判断请求参数是否正确
  3. python有哪些作用-python的函数有什么作用
  4. 基本概念,BGP协议的特征和消息类型,状态转换?
  5. robotframe使用之时间控件
  6. Openlayers中多图层遮挡时调整图层上下顺序
  7. 逾期了,如何消除不良记录?
  8. 【剑指offer】面试题42:连续子数组的最大和(java)
  9. css div下第一个span,CSS之div和span标签
  10. (转) 学习淘淘商城第一课
  11. 钉钉用户数破5亿 低代码应用数8个月增长86万
  12. kb3042553显示不适用计算机,KB3042553补丁打不上,怎么办?
  13. [noip2013]货车运输
  14. 计算机软件毕业论文教师指导记录,毕业论文导师指导记录【毕业论文指导记录(精选多篇)】...
  15. 非常强大的时间日期插件 --- JeDate.js
  16. hackerrank答案
  17. X4扭曲字体或图形 coreldraw_CorelDRAW X4案例教程上-电子教案文档.ppt
  18. 微信公众号迁移时同一个公司两个微信号公证问题
  19. 离谱!程序员业余时间开发的项目,版权也属于公司的?
  20. 【Python实战】有趣的代码百里挑一:这款“水波特效”脚本送给你,绝版哦~(建议保留)

热门文章

  1. 详解StringTokenizer函数
  2. 服务器上tomcat修改内存,8g服务器tomcat内存设置
  3. linux 8g内存只认4g,为什么8g运行内存只有4g可用
  4. web程序设计基础R实验报告 2021年 ---太原理工大学
  5. 网络安全工程师的初学路径
  6. DB2数据库安装与配置
  7. Linux下的常用的打包和解压缩命令
  8. 计算机网络:BGP路由协议
  9. CSS 为图片 增加边框效果
  10. js关闭当前窗口、标签页