这是一款短视频编辑 SDK ,仿 DouYin 音视频处理。功能包含有美颜、滤镜、贴纸、特效、录制、分段录制、速率录制、变声、配乐、rtmp 直播推流、图片转视频、剪辑等功能。
音视频录制编辑
片段加载失败点击下载 Gif
播放器
如果播放器效果加载失败点击下载 Gif 文件
####1、添加远程依赖
implementation 'com.devyk.avtools:AVTools:0.0.1'
####2、API 文档
JNI-播放模块-AVPlayerEngine
-
添加播放控件
<com.devyk.aveditor.widget.AVPlayView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="match_parent"/>
-
播放功能控制
/** * 设置播放源 */ public fun setDataSource(source: String?) /** * 播放 */ public fun start() /** * 暂停 */ public fun setPause(status: Boolean) /** * 指定跳转到某个时间点播放 */ public fun seekTo(seek: Double) /** * 停止 */ public fun stop() /** * 播放进度监听 */ public fun addProgressListener(progress: OnProgressListener)
JNI-音视频格式封装模块-AVMuxerEngine
/**
* @param outPath 输出的文件路径
* @param videoWidth 视频宽
* @param videoHeight 视频高
* @param frame_rate 帧率
* @param videoBitRate 视频码率
* @param audioSampleRate 音频采样率
* @param audioChannels 音频通道数量
* @param audioBitRate 音频码流
*/
fun initMuxer(
outPath: String?,
videoWidth: Int,
videoHeight: Int,
frame_rate: Int,
videoBitRate: Int,
audioSampleRate: Int,
audioChannels: Int,
audioBitRate: Int
);
/**
* @param 送入队列的数据
* @param isAudio 是否是音频数据
* @param pts 时间戳
*/
fun enqueue(byteArray: ByteArray?, isAudio: Boolean = false, pts: Long);
/**
* 关闭复用器
*/
fun close()
JNI-速率模块-AVSpeedEngine
-
PCM 速率控制
/** * @param track 操作音频速率控制的对象索引,不能重复 * @param channels 通道 * @param samplingRate 采样率 * @param pitchSemi 变调率 */ public fun initSpeedController( track: Int, channels: Int, samplingRate: Int, tempo: Double, pitchSemi: Double ) /** * 放入 PCM 数据 */ public fun putData(track: Int, input: ByteArray, length: Int): Int /** * 取出变速之后的 PCM 数据 */ public fun getData(track: Int, out: ShortArray, length: Int): Int /** * 关闭资源 */ public fun close(track: Int)
JNI-音频解码模块 - AVAudioDecodeEngine
-
任意音频文件解码为 PCM API
/** * C++ 实现 * 初始化解码器 */ public fun addRecordMusic(musicPath: String?) /** * C++ 实现 * 开始解码 */ public fun start() /** * C++ 实现 * 暂停解码 */ public fun pause() /** * C++ 实现 * 恢复解码 */ public fun resume() /** * C++ 实现 * 停止解码 */ public fun stop() /** * C++ 调用 *添加解码回调 */ public fun addOnDecodeListener(listener: OnDecodeListener)
JNI-音视频编辑模块-AVEditorEngine
待编辑...
####v_0.0.2 (研发中...)
- 分段录制(最后的音视频合并)
- RTMP 直播推流
- 美颜
- 特效
- 贴纸
- 软硬编解码
- 导入 MP3 格式 , 为视频的背景音,将录制的音频和导入的音频混音
- 音频,视频剪辑合成
- 基于 FFmpeg 、OpenGL/SL 自研万能音视频播放器(已完成)
- 导入 MP3 格式 , 为录制的音频源(已完成)
- 音频视频录制合成 mp4(已完成)
- 滤镜 (已完成)
- 水印 (已完成)
- 倍速播放(已完成)
- 速率录制(已完成 极慢/慢/标准/快/极快)
- 分段录制(完成,待分段总合并)