Android 视频、图片(暂未实现)、音频(暂未实现)压缩库 from Signal
项目 | Telegram | Signal |
---|---|---|
最低Android版本支持 | 18 | 26 |
aar大小 | 6.8M | 114K |
Telegram 6.8M的大小是包含4个abi架构的so大小,实际使用单个abi会减小4.6-5M Signal 114K的大小也包含4个abi架构的so大小,实际使用单个abi会减小6.8-11.4K
提交: 96539d70dffdff0386b80afa1c8022059405dee4 [96539d7] 父级: 07570bbfec 作者: Alex Hart [email protected] 日期: 2022年7月13日 15:59:23 提交者: Alex Hart 提交时间: 2022年7月13日 15:59:28 Bump version to 5.43.3
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.a365344743s:MediaCompressSignal:1.0.0'
}
org.thoughtcrime.securesms.util.VideoConvertUtil.init(context, scheduler);
Integer convertId = org.thoughtcrime.securesms.util.VideoConvertUtil.startVideoConvert(srcPath, dstPath, upperSizeLimit, true/false, listener)
org.thoughtcrime.securesms.util.VideoConvertUtil.stopVideoConvert(int convertId);
视频码率决定了视频清晰度,码率越大视频越清晰,但是文件会变大。
视频分辨率决定了视频宽高,分辨率越大视频宽高越大。
相同视频码率下,视频分辨率越大,视频越模糊。
音频码率决定了音频清晰度,码率越大音频越清晰,但是文件会变大。
可以控制 输出视频码率、分辨率 和 输出音频码率,但是音频码率通常在视频码率的 1/3至1/10,所以音频码率修改对最终文件大小影响不大。
1.根据 upperSizeLimit 和 源视频时长,计算出目标视频的码率
VideoBitRateCalculator.getTargetQuality(long duration, int inputTotalBitRate)。
2.根据目标视频码率,计算出目标视频分辨率
VideoBitRateCalculator.Quality.getOutputResolution()。
视频码率主要由输出尺寸和视频时长控制,但是提供了一个码率范围 VideoBitRateCalculator.MINIMUM_TARGET_VIDEO_BITRATE(默认500_000) 和 VideoBitRateCalculator.MAXIMUM_TARGET_VIDEO_BITRATE(默认2_000_000),可修改这个范围控制最终码率。
但是要注意如果VideoBitRateCalculator.MINIMUM_TARGET_VIDEO_BITRATE设置太大,会造成最终输出的文件超过upperSizeLimit,造成转换失败。
视频分辨率根据视频码率是否小于VideoBitRateCalculator.LOW_RES_TARGET_VIDEO_BITRATE(默认1_750_000)控制,如果小于返回VideoBitRateCalculator.LOW_RES_OUTPUT_FORMAT(默认480p),否则返回VideoBitRateCalculator.OUTPUT_FORMAT(默认720p),可以修改这三个值来控制输出视频分辨率。
VideoBitRateCalculator.AUDIO_BITRATE(默认192_000)