基于javacv ffmpeg 使用原生ffmpeg命令

基于javacv ffmpeg 使用原生ffmpeg命令

      • 1. ffmpeg
      • 2. ffprobe

相關閱讀:
javacv ffmpeg使用筆記

在這里插入圖片描述

測試過程中,發現ffmpeg-6.0-1.5.9-linux-x86_64.jar 存在問題(ffmpeg原生命令執行失敗),降級到ffmpeg-5.1.2-1.5.8-linux-x86_64.jar版本正常。

<javacv.version>1.5.8</javacv.version><dependencies><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>${javacv.version}</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</aifactId><version>5.1.2-${javacv.version}</version><classifier>linux-x86_64</classifier></dependency></dependencies><profiles><profile><id>Windows</id><activation><os><!-- mvn enforcer:display-info --><family>windows</family></os></activation><dependencies><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>5.1.2-${javacv.version}</version><classifier>windows-x86_64</classifier></dependency></dependencies></profile><profile><id>Mac</id><activation><os><!-- mvn enforcer:display-info --><family>mac</family></os></activation><dependencies><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>5.1.2-${javacv.version}</version><classifier>macosx-x86_64</classifier></dependency></dependencies></profile></profiles>

1. ffmpeg

org.bytedeco.ffmpeg.ffmpeg
org.bytedeco.ffmpeg.ffprobe

  • 版本號
   String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);System.out.println("ffmpeg path=>" + ffmpeg);ProcessBuilder pb = new ProcessBuilder(ffmpeg, "-version");pb.inheritIO().start().waitFor();
  • 直接拼接視頻(前提各個視頻片段幀率等屬性一致)
        // 輸入視頻文件路徑List<String> inputFiles = Arrays.asList("video1.mp4", "video2.mp4");// 輸出視頻文件路徑String outputFile = "output.mp4";// 拼接模板文件String modelFile = "modelFile.txt";// 創建拼接模板文件try (BufferedWriter writer = new BufferedWriter(new FileWriter(modelFile))) {for (String inputFile : inputFiles) {writer.write("file '" + inputFile + "'");writer.newLine();}} catch (IOException e) {e.printStackTrace();return;}String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);ProcessBuilder pb = new ProcessBuilder(ffmpeg,"-f", "concat","-safe", "0","-i", modelFile,"-c", "copy",outputFile);pb.inheritIO().start().waitFor();

2. ffprobe

  • 版本號
    public static void main(String[] args) throws IOException, InterruptedException {String ffprobe = Loader.load(org.bytedeco.ffmpeg.ffprobe.class);System.out.println("ffprobe path=>" + ffprobe);ProcessBuilder pb = new ProcessBuilder(ffprobe, "-version");pb.inheritIO().start().waitFor();}
  • 視頻屬性

更多用法:help、大模型
ffprobe -h topic

        String ffprobe = Loader.load(org.bytedeco.ffmpeg.ffprobe.class);ProcessBuilder pb = new ProcessBuilder(ffprobe,"-v", "error","-print_format", "json","-show_streams","video1.mp4");pb.inheritIO().start().waitFor();

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

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

相關文章

RPG Maker MV 踩坑十一 精靈及背景繪制問題

精靈繪制問題 RPG Maker MV戰斗問題入場飛身戰斗背景繪制精靈集及精靈 RPG Maker MV戰斗問題 在RMMV中戰斗是在場景中調用戰斗管理器&#xff0c;通過管理器去操作角色對象行動及精靈的繪制的。 入場飛身 在其中就發現一個問題加載圖片進場時&#xff0c;會偏高&#xff0c;…

Python編程學習第一篇——Python零基礎快速入門(五)—元組(Tuple)操作

Python元組是一種不可變的有序集合&#xff0c;可以存儲多個不同類型的數據。元組使用小括號來表示&#xff0c;其中的元素用逗號分隔開。與列表不同&#xff0c;元組的元素不能被修改、刪除或添加。它的一些常規操作包括元組的創建、訪問、添加、修改、刪除、運算等等&#xf…

電力電子功率模塊在工程應用中測溫NTC的使用

電力電子功率模塊在工程應用中測溫NTC的使用 1.概述2.什么是NTC3.模塊內部NTC3.1 絕緣隔離措施3.2 NTC熱量考慮 4.使用模擬方法測量NTC溫度4.1 分壓電阻大小 5.使用數字方法測量NTC溫度 1.概述 最近做項目的時候突然被問到一個問題。做實驗測溫用的NTC到底怎么用&#xff1f;為…

【Python】超時請求或計算的處理

超時機制 一般應用于處理阻塞問題 場景&#xff1a; 復雜度較大的計算&#xff08;解析&#xff09;某個數值、加解密計算等請求中遇到阻塞&#xff0c;避免長時間等待網絡波動&#xff0c;避免長時間請求&#xff0c;浪費時間 1. requests 請求超時機制 reqeusts 依賴中的…

[大師C語言(第十九篇)]C語言函數式編程技術詳解

引言 函數式編程&#xff08;Functional Programming&#xff0c;FP&#xff09;是一種編程范式&#xff0c;強調通過使用純函數和不可變數據來編寫代碼。這種范式具有許多優點&#xff0c;如易于測試、可維護性高、并發友好等。盡管C語言被認為是一種過程式編程語言&#xff…

JAVA設計模式-策略模式及在Springboot2.X中寫法

JAVA設計模式-策略模式及在Springboot2.X中寫法 一、經典的策略模式寫法二、Springboot2.X中策略模式寫法 策略模式的定義&#xff1a;策略模式是一種行為型設計模式,定義了一系列算法,并將每個算法封裝起來,使它們可以互相替換 策略模式&#xff1a;在策略模式&#xff08;Str…

算法 java 排序和查找

排序和查找 冒泡排序&#xff08;穩定&#xff09;選擇排序&#xff08;不穩定&#xff09;插入排序&#xff08;穩定&#xff09;希爾排序&#xff08;不穩定&#xff09;歸并排序&#xff08;穩定&#xff09;快速排序&#xff08;不穩定&#xff09;堆排序計數排序桶排序基數…

YOLOv8+PyQt5海洋船只檢測(可以重新訓練,yolov8模型,從圖像、視頻和攝像頭三種路徑識別檢測)

1.效果視頻&#xff1a;海洋船只檢測yoloV8檢測&#xff08;https://mbd.pub/o/bread/mbd-ZpaYk55r&#xff09;_嗶哩嗶哩_bilibili資源包含可視化的海洋船只檢測系統&#xff0c;可對于高空拍攝到的海洋圖片進行輪船檢測&#xff0c;基于最新的YOLOv8訓練的海洋船只檢測模型&a…

多線程知識-11

Runnable 和 Thread 用哪個好 使用Runnable接口的好處是&#xff1a; 避免了單繼承的限制&#xff1a;當你的類已經繼承了另一個類時&#xff0c;你仍然可以實現Runnable接口來創建線程。提高代碼的復用性&#xff1a;你可以將Runnable對象傳遞給多個線程來執行&#xff0c;從…

C++設計模式-策略模式,AI角色動態選擇行為

運行在VS2022&#xff0c;x86&#xff0c;Debug下。 27. 策略模式 策略模式讓算法的選擇與使用獨立開來&#xff0c;使得代碼更靈活、可擴展和易維護。應用&#xff1a;如在游戲開發中&#xff0c;AI角色需要根據環境和條件做出不同的行為&#xff0c;如尋路、攻擊、躲避等。可…

深度解析CSS中為什么會有Stacking Context的概念

CSS中的堆疊上下文&#xff08;Stacking Context&#xff09;概念是為了管理和控制網頁元素的重疊順序而引入的。堆疊上下文的引入解決了以下幾個關鍵問題&#xff1a; 層次管理&#xff1a; 在網頁中&#xff0c;多個元素可能會相互重疊&#xff0c;堆疊上下文定義了這些元素的…

01-CompressionWebpackPlugin---提高 Web 應用性能的利器

CompressionWebpackPlugin—提高 Web 應用性能的利器 筆記分享 在現代 Web 開發中&#xff0c;優化資源加載速度是提升用戶體驗的重要環節。減少文件大小可以顯著提升網頁加載速度&#xff0c;從而改善用戶體驗。CompressionWebpackPlugin 是一個強大的 Webpack 插件&#xff…

【安裝筆記-20240529-Windows-Electerm 終端工具】

安裝筆記-系列文章目錄 安裝筆記-20240529-Windows-Electerm 終端工具 文章目錄 安裝筆記-系列文章目錄安裝筆記-20240529-Windows-Electerm 終端工具 前言一、軟件介紹名稱&#xff1a;Wireshark主頁官方介紹功能特性 二、安裝步驟測試版本&#xff1a;electerm-1.39.35-win-…

【藍橋杯】常見的數據結構

&#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &#x1f34d;博學而日參省乎己&#xff0c;知明而行無過矣 目錄 &#x1f338;個人主頁&#xff1a;Yang-ai-cao &#x1f4d5;系列專欄&#xff1a;藍橋杯 C語言 &…

Spring項目中Ordered接口的應用:全局過濾器(GlobalFilter)的順序控制

在Spring框架&#xff0c;尤其是Spring Cloud Gateway或Spring WebFlux項目中&#xff0c;Ordered接口扮演著重要的角色&#xff0c;特別是在實現全局過濾器(GlobalFilter)時&#xff0c;用于控制過濾器執行的優先級。下面將介紹如何在Spring項目中使用Ordered接口來管理Global…

【AIoT-Robot】3d hand pose

手語是聾啞人士的主要溝通工具,它是利用手部和身體的動作來傳達意義。雖然手語幫助它的使用者之間互相溝通,但聾啞人士與一般人的溝通卻十分困難,這個溝通障礙是源于大部分人不懂得手語。 1. 手勢&&手語 手勢:手的姿勢 ,通常稱作手勢。它指的是人在運用手臂時,所…

初識springcloud

springcloud eureka eureka的作用 消費者該如何獲取服務提供者具體信息&#xff1f; 服務提供者啟動時向eureka注冊自己的信息,eureka保存這些信息消費者,根據服務名稱向eureka拉取提供者信息 如果有多個服務提供者&#xff0c;消費者該如何選擇&#xff1f; 服務消費者利…

創建模塊

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中&#xff0c;自定義模塊有兩個作用&#xff1a;一個是規范代碼&#xff0c;讓代碼更易于閱讀&#xff0c;另一個是方便其他程序使用已經編…

ORACLE創建dblink

dblink的作用 dblink數據庫鏈接顧名思義就是數據庫的鏈接&#xff0c;當我們要跨本地數據庫&#xff0c;訪問另外一個數據庫表中的數據時&#xff0c;本地數據庫中就必須要創建遠程數據庫的dblink&#xff0c;通過dblink本地數據庫可以像訪問本地數據庫一樣訪問遠程數據庫表中…

Ubuntu22.04之解決:terminal使用alt+1/alt+2/alt+3失效問題(二百三十八)

簡介&#xff1a; CSDN博客專家&#xff0c;專注Android/Linux系統&#xff0c;分享多mic語音方案、音視頻、編解碼等技術&#xff0c;與大家一起成長&#xff01; 優質專欄&#xff1a;Audio工程師進階系列【原創干貨持續更新中……】&#x1f680; 優質專欄&#xff1a;多媒…