FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg
《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频剪辑框架RxFFmpeg,通过该框架可以更快地开发剪辑App,下面就要介绍如何在App工程中使用RxFFmpeg。
RxFFmpeg是一个Android平台的音视频编辑、视频剪辑的快速处理框架,它基于多个音视频开源框架,包括但不限于FFmpeg 4.0、x264、mp3lame、fdk-aac、opencore-amr、openssl等等。RxFFmpeg主要提供拼接、转码、压缩、裁剪、变速、分离音视频、添加片头片尾、添加贴纸、添加字幕、添加滤镜、添加背景音乐等常见功能,能够基本满足音视频文件的日常剪辑需求。
RxFFmpeg的源码托管地址为https://github.com/microshow/RxFFmpeg,最新版本是2020年11月发布的RxFFmpeg 4.9(星星数4.6k),可见该框架的源码更新十分及时。并且RxFFmpeg的源码采用Java+XML编写,对于初学者而言非常友好,使用Android Studio Dolphin(小海豚版本)无需任何改动即可直接导入RxFFmpeg的demo工程。
在自己的App工程中集成RxFFmpeg也很简单,只要执行下列几个步骤就行。
一、导入RxFFmpeg库
如果已经事先导入RxFFmpeg的库工程,则只需在build.gradle中添加下面一行即可引入RxFFmpeg:
implementation project(path: ':rxffmpeg')
如果不用库工程,也只要在build.gradle中添加下面一行即可引入RxFFmpeg:
implementation 'com.github.microshow:RxFFmpeg:4.9.0'
如果没有较高要求的话,添加下面这行极速版的RxFFmpeg也够了:
// 极速版 (预计占用 4M 左右空间),主要移除了一些不常用的编解码器
implementation 'com.github.microshow:RxFFmpeg:4.9.0-lite'
二、执行FFmpeg命令
在App工程的Java代码中可通过以下方式异步执行FFmpeg的音视频剪辑命令:
private void runFFmpegRxJava() {
String text = "这里填完整的ffmpeg剪辑命令";
String[] commands = text.split(" ");
myRxFFmpegSubscriber = new MyRxFFmpegSubscriber(this);
//开始执行FFmpeg命令
RxFFmpegInvoke.getInstance()
.runCommandRxJava(commands)
.subscribe(myRxFFmpegSubscriber);
}
开始音视频剪辑操作后,可通过以下代码中断RxFFmpeg的剪辑操作:
RxFFmpegInvoke.getInstance().exit();
如果不是剪辑加工音视频文件,仅仅需要获取音视频文件的媒体信息,也可调用以下代码抓取指定文件携带的媒体信息:
String filePath = "这里填音视频文件的完整路径";
String mediaInfo = RxFFmpegInvoke.getInstance().getMediaInfo(filePath);
由此可见,RxFFmpeg用起来很简单,只要开发者掌握常见的ffmpeg操作命令,就能快速地在自己的App工程中添加各种音视频剪辑功能。
按照上述几个步骤给App工程集成RxFFmpeg后,编译运行RxFFmpeg的demo工程,打开测试App如下图所示。

可见RxFFmpeg界面简洁,容易上手,是个不错的国产视频剪辑SDK。
更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。
FFmpeg开发笔记(七十七)Android的开源音视频剪辑框架RxFFmpeg的更多相关文章
- FFmpeg开发笔记(三):ffmpeg介绍、windows编译以及开发环境搭建
前言 本篇章是对之前windows环境的补充,之前windows的是无需进行编译的,此篇使用源码进行编译,版本就使用3.4.8. FFmpeg简介 FFmpeg是领先的多媒体框架,能够解码 ...
- FFmpeg开发笔记(四):ffmpeg解码的基本流程详解
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(五):ffmpeg解码的基本流程详解(ffmpeg3新解码api)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
前言 ffmpeg播放rtsp网络流和摄像头流. Demo 使用ffmpeg播放局域网rtsp1080p海康摄像头:延迟0.2s,存在马赛克 使用ffmpeg播放网络rtsp文件流 ...
- FFmpeg开发笔记(十):ffmpeg在ubuntu上的交叉编译移植到海思HI35xx平台
FFmpeg和SDL开发专栏(点击传送门) 上一篇:<FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放>下一篇:敬请期待 前言 将ffmpeg移植到海思H ...
- 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)
随笔分类 - webrtc Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...
- Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会
文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...
- Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验
前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...
随机推荐
- 作业时间之"最早时间和最晚时间"
一.从左往右(小到大)算最早时间 0+2=2 0+3=3 因为3比2大所以选择3(早大晚小),需活动无时间所以不用加 3+4=7 7+3=10 因为13号点有两个 2+5=7 和 11号点的10(虚活 ...
- 我的Vue之旅(2)
2020-10-22 仿照教程动手搞了一个Vue的组件化构建应用的Demo, 嗯,对,就是仿照,我一点都不觉得可耻.关于Vue组件化给我的感觉就是自己写一些 类似于HTML中的 h1, a, p这样的 ...
- cmake基础知识
Cmake Cmake变量 Cmake的基本类型只有两种,分别是字符串和字符串列表,使用set命令来设置变量 set(var abc) # abc是字符串,var是值为"abc"的 ...
- PicGo使用简明教程及踩坑记录
PicGo使用简明教程及踩坑记录 PicGo使用 我现在用的博客的记录方式是Typora+PicGo+阿里云oss,这一套配置好后就非常方便了,可以快捷上传图片到云服务器,并且阿里云的速度也是我试过的 ...
- vue模板语法中能否用??的三目运算简写的问题
使用双问号(??)的三目运算可以在 JavaScript 中使用,但在 Vue 模板语法中不支持.Vue 模板语法中的三目运算仍然使用单个问号(?)和冒号(:)的标准形式.例如: {{ conditi ...
- python中的split()函数
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 a,b,c=input().split(,) 意思是在a,b,c三个输入值直接 ...
- HTML常见的标签---表单
1 <table> 2 <tr> 3 <!-- name 一定要带上以后交互 --> 4 <td>用户名:</td> 5 <td> ...
- AEM 与 ActiveMQ 集成方案详解
Adobe Experience Manager (AEM) 与 ActiveMQ 的集成可实现系统间的解耦和异步通信,以下是详细的集成步骤与代码实现: 一.环境准备 AEM 环境:AEM 6.5+ ...
- 重磅预告 | 开源家族又添新成员!12月16日Molecule在Github、Gitee等你
随着全球开源生态的持续性发展,开源项目数量呈现指数级的增长,并逐渐覆盖全栈技术领域.袋鼠云数栈技术开源团队一直秉承着"源于开源 回馈开源"的理念,坚持以技术为核心,开源开放.不 ...
- git ---多用户管理
一.概述 相信大家都遇到过这样的问题,实际开发中需要在一台PC上用到 不同平台git的账号甚至同一个平台的多个账号(比如本人gitee .字自己在nas上搭建的gitea ,另外还有github账 ...