Android——UI篇:android视频压缩:兼容7.0版本。
来源:互联网 发布:招商基金待遇知乎 编辑:程序博客网 时间:2024/06/05 17:13
前言:
首先说一下,这个视频压缩项目是完美兼容 Android 7.0及以下系统的:
这个视频压缩啊,说起来真蛋疼,第一次做这个东西,啥都不懂,网上找了好多例子来使用,要么就是不适配机型,要么就是无缘无故的崩溃,各种bug,各种烦人,不过咱程序员还是不能轻易放弃的,终于皇天不负有心人,找到一个很好用的视频压缩库,使用方法很简单,就那么几行代码,好了,废话不多说了,先贴上github的地址供大家下载源代码:
github地址:https://github.com/jczmdeveloper/XCVideoCompressor
下载下来之后把根目录里面的ffmpeg4android_lib文件夹以module库的形式导入到我们的项目中,然后把app目录下的util和video连个文件夹下的代码拷到我们的项目中,就可以直接使用了。
下面是使用方法:
//mInputStr:原始视频地址路径 VideoCompressor.compress(this, mInputStr, new VideoCompressListener() { @Override public void onSuccess(final String outputFile, String filename, long duration) {//成功 } @Override public void onFail(final String reason) {//失败 } @Override public void onProgress(final int progress) {//压缩进度 } });以上是压缩的使用方法:只需要传入一个上下文对象,一个视频地址,一个视频压缩回调接口,实现三个方法,同学们可以分别在三个回调方法中做相应的操作。回调方法很容易理解,注释就不详细的写了。使用方法就介绍完了。
关于压缩命令:
关于ffmpeg的压缩命令,在这个项目中的运用,大家可以使用 Ctrl + 鼠标左键点击上面的压缩方法compress,即可看到上面的压缩命令,也就是VideoCompressor这个类中的静态变量:mStrCmd。这个变量的内容就是该项目的视频压缩命令了,关于压缩命令的详解,下面放一个地址,大家可以做参考来修改压缩命令达到大家的需求。
ffmpeg命令参数详解:https://segmentfault.com/a/1190000002502526
再放一个官网的连接:http://ffmpeg.org/
因为我也是第一次搞这个东西,上面方法的两个地址可能不是很全面,也不是很好,但是对于菜鸟来说,这两个就够用了,如果大家以后找到更好的ffmpeg参数详解的博文,希望大家留言互相讨论。
最后:
这里需要注意,再打包发布版本的apk时,编译可能会报错,出现module中的string文件中的部分乱码,可能导致编译不通过,不过没关系,我们只需要再我们主工程app下的build.gradle中的android根括号内添加以下代码,就可以通过了:
android { ... lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false } }好了,添加完上述代码,就可以编译通过了。
本篇文章到此介绍完毕,有不对的地方大家可以在下方评论留言,多交流。谢谢观看!!
- Android——UI篇:android视频压缩:兼容7.0版本。
- Android视频压缩
- Android 视频压缩
- Android 视频压缩
- android 版本兼容 @TargetApi
- Android 版本兼容
- Android版本兼容
- android的版本兼容
- Android-- UI 布局,屏幕分辨率兼容和版本兼容,屏幕适配解决方案
- Android 版本更新工具 兼容7.0
- android应用的视频压缩
- Android多版本兼容示例
- Android多版本兼容示例
- [Skill]Android版本兼容器
- Android 版本兼容适配
- android兼容低版本Fragment
- Android Fragment兼容低版本
- android studio更改兼容android低版本
- jsp中frameset的使用
- 多线程中是否必须使用sleep方法
- Java并发编程--Thread中start()与run()方法的区别概要
- 含有null值属性对象转json时使其变成空字符串
- 360°透视:云原生架构演进
- Android——UI篇:android视频压缩:兼容7.0版本。
- Restful在Spring中的应用
- 物理删除dbf文件,oracle连接异常
- Jpeg编码原理——熵编码哈夫曼编码
- SVM学习—SMO算法(Sequential Minimal Optimization)
- 机器学习--归纳总结
- Linux下mysql主从配置
- Golang实现验证码图片OCR
- JVM基础概念