FFmpeg裁剪視頻在Android上的實現

添加依賴:

implementation 'com.arthenica:mobile-ffmpeg-full:4.4.LTS'

代碼實現:?

fun cropMiddleThird(inputPath: String, outputPath: String) {val cmd = arrayOf("-y",  // 覆蓋輸出文件"-i", inputPath,"-filter:v", "crop=iw:ih/3:0:ih/3",  // 裁剪中間1/3"-c:a", "copy",  // 復制音頻流outputPath)FFmpeg.executeAsync(cmd) { executionId, returnCode ->if (returnCode == RETURN_CODE_SUCCESS) {Log.i(TAG, "Video crop completed successfully")} else {Log.e(TAG, "Video crop failed with return code $returnCode")}}}

這段 FFmpeg 命令中的參數含義如下:

-filter:v?參數解析

  • 完整形式-filter:v?是?-filter_complex?的簡化形式,專門用于視頻濾鏡

  • 含義:表示后面跟隨的是視頻濾鏡(video filter)設置

  • 等價寫法:也可以簡寫為?-vf(兩者完全等效)

crop=iw:ih/3:0:ih/3?濾鏡參數解析

這是一個視頻裁剪(crop)濾鏡,各部分的含義為:

  1. iw

    • 表示 input width(輸入視頻的原始寬度)

    • 這里保持原始寬度不變

  2. ih/3

    • ih?表示 input height(輸入視頻的原始高度)

    • ih/3?表示將高度裁剪為原始高度的 1/3

  3. 0

    • 表示裁剪區域從水平方向(X軸)的 0 位置開始(即最左側)

  4. ih/3

    • 表示裁剪區域從垂直方向(Y軸)的 1/3 高度處開始

    • 這樣組合起來就是從視頻垂直方向的中間 1/3 區域裁剪

完整命令含義

ffmpeg -y -i input.mp4 -filter:v "crop=iw:ih/3:0:ih/3" -c:a copy output.mp4

表示:

  1. -y:覆蓋輸出文件不提示

  2. -i input.mp4:指定輸入文件

  3. -filter:v "crop=iw:ih/3:0:ih/3"

    • 裁剪視頻,保持原始寬度

    • 高度取原始高度的 1/3

    • 從垂直方向 1/3 處開始裁剪(最終得到的是視頻中間的 1/3 部分)

  4. -c:a copy:音頻流直接復制不重新編碼

  5. output.mp4:輸出文件路徑

其他常見表達式

表達式含義
iw輸入視頻寬度
ih輸入視頻高度
ow輸出視頻寬度
oh輸出視頻高度
dar顯示寬高比
sar樣本寬高比
n當前幀序號
t當前時間戳(秒)

實際應用示例

如果想裁剪視頻頂部 1/3(而不是中間):

crop=iw:ih/3:0:0

如果想裁剪視頻右側 1/3:

crop=iw/3:ih:iw*2/3:0

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

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

相關文章

openEuler 22.03 sp1 更新openssh 10.0p2 —— 筑夢之路

華為歐拉openEuler制作openssh 9.1/9.2/9.3 p1 rpm——筑夢之路_歐拉構建openssh-CSDN博客 上面是需要修改的sshd_config配置,將這3行注釋掉。 附上22.03 sp1的yum源文件 # cat openEuler.repo #generic-repos is licensed under the Mulan PSL v2. #You can use t…

AGI(4)大模型的推理綜述

本文源自基于基礎模型的推理綜述《A Survey of Reasoning with Foundation Models》,因為原文有點難于理解,在這個論文的基礎上增加了自己的解釋和理解,重新整理成此文。大家可以通過查看原文閱讀原始論文。 1、推理的概念 推理是解決復雜問題…

Rust 中的宏與函數

在 Rust 編程中,宏(Macro)和函數(Function)是兩種非常重要的編程工具。雖然它們都可以用來組織代碼和實現復用,但它們在定義方式、作用原理、性能、靈活性以及適用場景等方面存在諸多不同。本文將詳細介紹 …

c++中左值與右值

在 C++ 中,左值(lvalue) 和 右值(rvalue) 是表達式的基本屬性,它們決定了表達式能否被賦值、取地址等操作。 1. 核心定義 左值(lvalue) 特點:表示一個具名的、持久的對象,可位于賦值語句左側。示例: int x = 42; // x是左值 x = 100; // 合法:左值可…

DeepSeek14-open-webui 常用概念區分

I、“Tools & Functions” 與 Pipelines(工作流系統)區別 以下是“Tool & Functions”與“Pipelines”的區別、適用場景及作用的詳細分析,內容基于參考文檔提取與總結: 一、本質區別 維度Tool & FunctionsPipeline…

PaddleOCR + Flask 構建 Web OCR 服務實戰

1、前言 隨著圖像識別技術的發展,OCR(光學字符識別)已經成為很多應用場景中的基礎能力。PaddleOCR 是百度開源的一個高性能 OCR 工具庫,支持中英文、多語言、輕量級部署等特性。 而 Flask 是一個輕量級的 Python Web 框架,非常適合快速構建 RESTful API 或小型 Web 應用…

C++結構體初始化與成員函數實現語法詳解

C結構體初始化與成員函數實現語法詳解 一、結構體靜態成員初始化語法 在C中,靜態成員變量需要在類外部進行定義和初始化。提供的代碼展示了如何為MAIN_PROPULSION_CAN類的靜態成員變量進行初始化: MAIN_PROPULSION_CAN::VoltageThresholds MAIN_PROPU…

買了新內存條插上bios識別,進入系統不可用,b450主板,內存插槽A1A2 可以點亮,B1B2不可以,A2B2不可以,B1B2還是不可以

提示:買了新內存條插上bios識別,進入系統不可用,b450主板,內存插槽A1A2 可以點亮,B1B2不可以,A2B2不可以 文章目錄 前言——環境一、第一種情況,開機不能點亮二、第二種情況, 總內存&#xff0c…

7.4.1_2B樹的插入刪除

B樹插入: 假如是m階B樹,插入關鍵字時都要滿足每個節點上的關鍵字個數最少為m/2向上取整-1關鍵字,最多有m-1個關鍵字,且每次插入的新元素一定是放在最底層的終端節點(因為如果不是放在終端節點,會導致該節點上可能有葉子…

Linux系統基本操作指令

Linux系統基本操作指令 文章目錄 Linux系統基本操作指令一、介紹二、基礎設置2.1 設置ubuntu與window的共享目錄2.2 ubuntu系統簡單介紹 三、Linux命令及工具介紹3.1 目錄管理命令(功能,格式,參數,系統參數)3.2 文件操作命令 四、網絡命令4.1…

系統思考VS心智模式

在這張圖片中,我們看到的是兩杯相同價格的咖啡,它們的價格顯示方式不同。一杯咖啡的原價和現價都寫得很大,而另一杯的價格則以較小的字體呈現。這種微妙的設計差異揭示了一個有趣的心理現象——心智模式。 人們在面對同樣的價格時&#xff0…

all()函數和any()函數

參考文獻 在if上使用.all和.any # 中心點未改變,說明達到穩態,結束遞歸if (self.points new_center).all():sum self.__sumdis(result)return result, self.points, sum

Maven:依賴管理就像樂高拼裝的藝術

目錄 🏗? 第一章:Maven是高級樂高玩家🔍 依賴管理的基本單元 🧩 第二章:多模塊項目——樂高巨艦組裝術🌟 為什么要拆分模塊?🛠? 父子POM配置示范 ?? 第三章:依賴沖突…

空間數據挖掘 期末復習

前言:此篇復習筆記結合了課程ppt和deepseek回答進行總結,如有謬誤懇請指正。 期末考例題 (名詞解釋*10、簡答*6、論述*6) 一、名詞解釋 數據挖掘 過擬合(Overfitting) Apriori算法 決策樹(…

跳跳桿、彈跳桿、Poto stick:百年彈跳玩具的健康與使用分享(大模型改寫)

跳跳桿:百年彈跳神器的健康爭議與安全指南 (用DeepSeek改寫前一篇文章,可惜沒有接廣告,否則植入一些鏈接多好) 🔍 一、健康功效:驚喜與風險并存 爭議性健康主張 坊間流傳跳跳桿可能具備&…

WHAT - React Native 開發 App 從 0 到上線全流程周期

文章目錄 一、React Native App 開發流程總覽二、各階段詳細說明需求分析 & 產品規劃技術選型 & 方案確定項目初始化A. 使用 Expo(推薦新手)B. 使用 React Native CLI(自由度更高) UI 開發 功能開發(主開發階…

Windows11 無法發現局域網內設備解決方法

臨時解決 發生問題絕大多數Windows11 24H2版本,該版本目前來看沒有永久解決方案 初步問題可以定位在FDResPub服務問題,重啟該服務可以短暫恢復,臨時解決方案就是重啟該服務,然后把網絡設備右鍵創建快捷方式 做成批處理文件 創建…

張 心理健康咨詢相關論文;AI心理咨詢數字孿生:個性化風格的突破

張 心理健康咨詢相關論文 EmoLLM:多模態情感理解與大型語言模型的結合 PsyDT:使用 LLM 構建具有個性化咨詢風格的心理咨詢師數字孿生 目前,大型語言模型 (LLM) 在心理咨詢領域取得了重大進展。然而,現有的心理健康 LLM 忽略了一個關鍵問題,即他們沒有考慮不同的心理咨…

通達信【千軍趨勢決策系統】幅圖指標

指標功能說明 本指標基于價格波動與趨勢轉折點,結合K線形態分析,提供多維度買賣信號,適用于股票、期貨等趨勢交易場景。 核心信號解讀 「橫掃千軍」 觸發條件:短期、中期、長期趨勢同時確認反轉向上。 用法:趨勢共振信號,提示較強多頭機會,可結合成交量驗證。 「出擊!…

大模型LoRA微調實踐

大模型LoRA微調實踐 準備工作 數據集:采用 GitHub 上的 Chinese-medical-dialogue-data 中文醫療對話數據集 Github地址如下: https://github.com/Toyhom/Chinese-medical-dialogue-data 微調模型: Qwen 1.5B模型(Qwen2、2.5均…