Telegram视频压缩模块简单拆分

       新入职一家公司有一段时间了,本身负责的是基于Telegram的二次开发,应该也有童鞋用过这个软件,俄罗斯大佬们开发的一款即时通信类软件,主打安全、高效、快速……在国外用的比较多。这个项目是开源的从c到java所有开源……有兴趣的童鞋能够去看看。
这个项目很大涉及到的东西不少,看看jni目录就知道了,不少底层模块,须要会NDK交叉编译,底层不少实现都是用jni实现的。项目没有不少第三方库,什么大礼包啊啥的 ,除了特殊必要的第三方服务依赖。控件所有手写,xml一个不用,而后打包apk体积就比较小……emm ……因此看这个项目的源码也是很痛苦的,痛并快乐着! Telegram源码
      进入正题,趁着这两天没事把Telegram的视频压缩模块分离出来了,方便之后其余项目使用 ,它的视频压缩是用opengles,项目还集成了ffmpeg,可是它在视频压缩并无用ffmpeg(可能有其余用途 ) 核心类:

控制器类MediaController:java


通知管理类NotificationCenter:git


Build.VERSION.SDK_INT小于18还须要用到libyuv这个库,我是直接从Telegram拿下来的。github

直接上demo代码Github地址
安全

运行效果:
网络


在视频压缩他作了压缩队列处理,每点一下就把任务加入了这个队列,一个一个的执行。ide


视频压缩参数能够在这个类里面配:ui


       注意在使用demo须要把须要压缩的视频放置在根目录命名test,我是懒得写跳转相册业务逻辑了,方便演示用。实际开发本身指的路径就好了。spa

       实际是怎么处理视频压缩业务逻辑能够去demo里面看或者官方的Telegram源码去看,我这里只是简单拆分出来,在Telegram里面还有不少模块、控件能够拆出来单独使用,后面打算仔细看看这个核心的Tgnet网络模块,看能不能单独拆出来~~~~~3d

相关文章
相关标签/搜索