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進階文章目錄為《FFmpeg開發筆記全目錄(FFmpeg開發實戰詳解,含直播系統的搭建過程)》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89647.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小測一下筆記本電腦的VMXNET3和E1000e網卡性能

正文共:999 字 14 圖,預估閱讀時間:1 分鐘 通過上次操作,我們已經實現了將筆記本電腦的ESXi版本從6.0升級到了6.7(VMware ESXi 6.7可以成功識別機械硬盤了),并且測得以電腦中的虛擬機作為server…

K8S初始化master節點不成功kubelet.service failed(cgroup driver配置問題)

一、背景 安裝k8s集群,初始化master節點一直不成功。 二、排查 查看日志 ps -ef | grep kube-apiserver [rootzjy01 home]# ps -ef | grep kube-apiserver root 85663 4637 0 12:41 pts/1 00:00:00 grep --colorauto kube-apiserver [rootzjy01 home…

C++ 標準模板庫算法之 transform 用法

目錄 1. 說明 2. 用法示例 1. 說明 std::transform 是一種多功能算法&#xff0c;用于將已知函數應用于一個或多個范圍內的元素&#xff0c;并將結果存儲在輸出范圍內。它主要有兩種形式&#xff1a;一元運算和二元運算。具體來說是在 <algorithm> 標頭中。函數聲明&am…

開源 C# .net mvc 開發(六)發送郵件、定時以及CMD編程

文章的目的為了記錄.net mvc學習的經歷。本職為嵌入式軟件開發&#xff0c;公司安排開發文件系統&#xff0c;臨時進行學習開發&#xff0c;系統上線3年未出沒有大問題。開發流程和要點有些記憶模糊&#xff0c;趕緊記錄&#xff0c;防止忘記。 嵌入式 .net mvc 開發&#xff…

OpenCV圖像邊緣檢測

一、邊緣檢測基礎概念 邊緣檢測是圖像處理中最基本也是最重要的操作之一&#xff0c;它能識別圖像中亮度或顏色急劇變化的區域&#xff0c;這些區域通常對應物體的邊界。OpenCV提供了多種邊緣檢測方法&#xff0c;從傳統的算子到基于深度學習的現代方法。 1.1 為什么需要邊緣…

(Arxiv-2024)自回歸模型優于擴散:Llama用于可擴展的圖像生成

自回歸模型優于擴散&#xff1a;Llama用于可擴展的圖像生成 paper是香港大學發布在Arxiv2024的工作 paper title:Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation Code:鏈接 Abstract 我們介紹了LlamaGen&#xff0c;一種新的圖像生成模型系列&am…

高頻SQL50題 第九天 | 1164. 指定日期的產品價格、1204. 最后一個能進入巴士的人、1907. 按分類統計薪水

1164. 指定日期的產品價格 題目鏈接&#xff1a;https://leetcode.cn/problems/product-price-at-a-given-date/description/?envTypestudy-plan-v2&envIdsql-free-50 狀態&#xff1a;已完成 考點&#xff1a; group by select語句中使用聚合函數max()&#xff1a;獲取…

Java內存模型(JMM)深度解析

1. 引言 在當今多核處理器和并發編程盛行的時代&#xff0c;Java工程師們在構建高性能、高可用系統時&#xff0c;常常會面臨復雜的線程安全挑戰。數據不一致、競態條件、死鎖等問題&#xff0c;不僅難以調試&#xff0c;更可能導致系統行為異常。這些問題的根源&#xff0c;往…

參數僅 12B! FLUX.1-Kontext-dev 實現高效文本驅動圖像編輯,性能媲美 GPT-4o

FLUX.1-Kontext-dev 是由 Black Forest Labs 團隊于 2025 年 6 月 26 日聯合發布的生成與編輯圖像的流匹配&#xff08;flow matching&#xff09;模型。FLUX.1 Kontext 的圖像編輯是廣泛意義上的圖像編輯&#xff0c;不僅支持圖像局部編輯&#xff08;對圖像中的特定元素進行針…

Robot---能打羽毛球的機器人

1 前言 Robot系列主要介紹一些比較有意思的機器人&#xff0c;前面的博客文章中也給讀者朋友們展示了一些&#xff1a; 《人形機器人---越來越像人了》 《自動駕駛---兩輪自行車的自主導航》 《自動駕駛---會打架的“球形機器人”》 《Robot---SPLITTER行星探測機器人》 《Robo…

瀏覽器默認非安全端口列表

瀏覽器默認非安全端口列表: https://chromium.googlesource.com/chromium/src.git//refs/heads/master/net/base/port_util.cc 0, // Not in Fetch Spec.1, // tcpmux7, // echo9, // discard11, // systat13, // daytime15, // netstat17, …

在線租房平臺源碼+springboot+vue3(前后端分離)

大家好&#xff0c;今天給大家帶來一個非常完善的 在線租房平臺。大家可用學習下系統的設計和源碼風格。 視頻演示 在線租房平臺源碼springbootvue3 圖片演示 技術棧 后端 技術框架&#xff1a;JDK8SpringBoot Mybatis-Plus 數據庫&#xff1a;Mysql8 前端 核心框架 - Vue…

android核心技術摘要

Android APP 默認賦予權限apk簽名 apk簽名&#xff1a;https://blog.csdn.net/u014763302/article/details/149055647apksign使用反法&#xff1a;[https://www.cnblogs.com/fengxing999/p/11978037.html]從Android源碼生成系統簽名文件&#xff1a;https://blog.csdn.net/wenz…

離線遷移 Conda 環境到 Windows 服務器:用 conda-pack 擺脫硬路徑限制

背景&#xff1a; 在進行深度學習算法的環境部署時&#xff0c;由于生產服務器被徹底隔離外網&#xff0c;只能把conda中env文件夾中的虛擬環境文件夾從開發機直接拷到離線 Windows 服務器。 其中一運行labelimg就報錯&#xff1a; Fatal error in launcher: Unable to creat…

vue3+原生javascript 手寫日期時間選擇框 滾動選擇可輸入

需求&#xff1a; web端 想要跟手機端一樣選擇年月日時分&#xff0c;通過滾動選擇 實現效果圖&#xff1a; 理念&#xff1a; 1.年月日時分 分別為單個輸入框&#xff0c;用來做輸入修改 2.div把輸入框拼接起來&#xff0c;顯示出一個日期框的樣子 3.年月日時分 下拉給默…

Jetson邊緣計算主板:Ubuntu 環境配置 CUDA 與 cudNN 推理環境 + OpenCV 與 C++ 進行目標分類

最近由于業務需求&#xff0c;接觸到了Jetson邊緣AI計算主板&#xff0c;博主使用的是Jetson Orin NX 16GB這個版本&#xff0c;可以看到其算力達到了100TOPS&#xff0c;這是一個非常恐怖的算力了&#xff0c;接下來便是博主對其的環境配置過程&#xff0c;博主要在該主板上運…

CLIP模型實現中的其他細節

之前已經完整的拆解了CLIP中所用到的ResNet、ViT和Transformer三個模型&#xff08;CLIP拆解-CSDN博客&#xff09;&#xff0c;這篇將講解model.py實現中的其他細節。 1.關于ResNet模型中vision_head的設置 ResNet: vision_heads vision_width * 32 // 64 ViT: vision_h…

國科大深度學習作業1-手寫數字識別實驗

背景介紹&#xff1a;單位實習&#xff0c;趁機摸魚&#xff0c;由于電腦只安裝了VSCode&#xff0c;所以算是從環境搭建寫起。 目錄 一、環境搭建 1. 安裝Anaconda 2. 創建Python環境 3. 安裝PyTorch 4. 安裝其他必要庫 二、在 VSCode 中配置環境 1. 安裝Pytho…

基于Spring Boot的綠園社區團購系統的設計與實現

第1章 摘 要 本設計與實現的基于Spring Boot的綠園社區團購系統&#xff0c;旨在為社區居民提供一套高效、便捷的團購購物解決方案。隨著電子商務的發展和社區居民對便捷購物需求的增加&#xff0c;傳統的團購模式已無法滿足用戶的個性化需求。本系統通過整合現代化技術&…

【51單片機四位數碼管從0循環顯示到99,每0.5秒增加一個數字,打擊鍵計數】2022-6-11

緣由 #include "REG52.h" unsigned char code smgduan[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,64,15,56}; //共陰0~F消隱減號 unsigned char Js0, miao0;//中斷計時 秒 分 時 毫秒 unsigned int shu0; //bit Mb0;//…