Android 中通过 FFmpeg 命令对音视频编辑处理
以下文章来源于DevYk, 作者DevYK
音视频编辑器前言有时候我们想对音视频进行加工处理 , 比如视频编辑、添加字幕、裁剪等功能处理 , 虽然 Github 上开源了一些比较不错的项目 , 但是如果我们想在此项目上进行二次开发 , 比如我想拿到该项目的动态库基于 OpenH264 来进行对 YUV 编码 , 这个时候有可能该动态库没有集成 OpenH64 库 , 所以为了扩展性 , 我就自己弄了一套万能的库 , 基本上包含了所有常用的音视频处理库 , 你不用再去进行编译 。
编译完成的头文件和动态库可以在该项目的 core/cpp 目录自行获取(「已完全开源」) 。
介绍「视音频编辑器」 主要移植 FFmpeg v4.4-dev + libx264 + freetype + fontconfig + fribidi + openh264 +libfdk-aac + gnutls + speex + libwebp + lame +opus + opencore-amr + https 等库编译的适用于 Android 平台的音视频编辑、视频剪辑的快速处理框架 , 目前内置了音视频剪辑、编辑、多个视频文件合并、字幕、水印、倒放等功能 , 也可以传入 「FFmpeg」 命令来进行处理 。
「我们先来看一下内置功能的效果:」
音视频剪辑:
文章插图
音视频合成:
音视频编辑:
如何使用1. 添加依赖
implementation 'com.devyk.ffmpeglib:AVFFmpegCore:1.0.1'
2. 功能 API 介绍
「回调处理」
public interface ExecuteCallback {/***开始处理*/void onStart(Long executionId);/*** 如果外部传递了当前操作视频的时长 , 那么返回的是百分比进度 , 反之返回的是操作视频对应的微妙时长** @param v*/void onProgress(float v);/***处理成功*/void onSuccess(long executionId);/***处理失败*/void onFailure(long executionId, String error);/***取消处理*/void onCancel(long executionId);/*** ffmpeg 执行的 log*/void onFFmpegExecutionMessage(LogMessage logMessage);}
「AVEditor」
- 剪辑:
- 旋转:
- 裁剪:
- 添加文字水印:
- 添加图片水印:
- 视频合并:
- 添加背景音乐:
- 音视频分离:
- 视频倒放:
- 视频转图片:
- 视频转 Gif:
- 自定义命令:
FFmpeg 编译小技巧有时候我们发现 Github 上一些基于 FFmpeg 开发的比较好的项目 , 比如 ijkplayer, RxFFmpeg 等 , 我们想基于它做二次开发 , 由于我们不知道怎么编译 , 也不知道编译 FFmpeg 到底需要开启哪些节点 , 这个时候我就想拿某些项目的编译脚本 , 基于它来进行二次编译 。 一般来说有些项目不会开源编译 FFmpeg 的脚本 。 这个时候我们可以通过拿到开源项目的静态或者动态库 , 这里我就以 RxFFmpeg 来举例 , 可以看看我是如果拿到它的编译脚本.
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 国外|坐拥77件专利,打破国外的垄断,造出中国最先进的家电芯片
- 手机基带|为了5G降低4G网速?中国移动回应来了:罪魁祸首不是运营商
- 通气会|12月4~6日,2020中国信息通信大会将在成都举行
- 中国|浅谈5G移动通信技术的前世和今生
- 操盘|中兴统一操盘中兴、努比亚、红魔三大品牌
- Blade|售价2798元 中兴Blade 20 Pro 5G手机发布 骁龙765G配四摄
- 健身房|乐刻韩伟:产业互联网中只做单环节很难让数据发挥大作用
- 垫底|5G用户突破2亿:联通垫底,电信月增700万,中国移动有多少?
- 计费|5G是如何计费的?