【小白】linux安裝ffmpeg | java轉碼 【超詳細】

前言

? ? ? ? 最近在開發過程中,發現當我們上傳除了mp4以外的其他少見的格式,如 .flv .rmvb 格式的視頻時,在前端在線播放的時候會播放不出來畫面,所以? 接下來,將要進行一個非常完美的工程,將視頻格式轉為.mp4

1.安裝 ffmpeg

ffmpeg有很多強大的功能,如進行視頻切邊? 分隔? ?轉碼 等功能 。大家可以理解為是一個.exe文件 只要安裝好? 找到執行路徑? 就可以進行視頻的操作。 話不多說? 直接開始

2.下載ffmpeg包

OK? 已經給大家準備好了? ffmpeg-5.1.1-amd64-static.tar.xz
鏈接: https://pan.baidu.com/s/1CmL0NNXtB2GQc8JwjE5IBg?pwd=1234 提取碼: 1234

3.安裝啟動 ffmpeg

來 將下載好的放入 linux中 隨便放到一個文件夾下? 我一般喜歡放在 opt下

??

3.1 解壓文件

# 解壓.xz
xz -d ffmpeg-5.1.1-amd64-static.tar.xz# 解壓 tar
tar -xvf ffmpeg-5.1.1-amd64-static.tar.xz

3.2 啟動 ffmpeg

進入 解壓好的文件夾下

?紅框框 的 這兩個 執行命令 很重要? ?使用java執行的時候 都是找到 ffmpeg 執行文件

# 進入解壓好的文件夾
cd ffmpeg-5.1.1-amd64-static/# 執行命令
./ffmpeg

? ?出現以下執行成功

?3.3 設置全局命令


# 進入 /usr/bin下
cd /usr/bin#  ln  -s  自己的目錄所在                別名
ln -s /opt/ffmpeg-5.1.1-amd64-static/ffmpeg ffmpeg#  ln  -s  自己的目錄所在                     別名
ln -s /opt/ffmpeg-5.1.1-amd64-static/ffprobe ffprobe

?4.測試

?首先準備好一個隨便格式的視頻文件? 我準備了一個 MP4的因為其他的也找不到 哈哈哈? ?

執行命令


# ffmpeg -i 文件名                                               轉好后的文件路徑  
ffmpeg -i input.mp4  -c:v libx264 -crf 19 -strict experimental  /opt/out.mp4

ok 測試通過 就可以? 使用java代碼 進行 執行拉

5.java執行ffmpeg

?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;public class FFmpegVideoConverter {private final String ffmpegPath;/*** 構造函數,指定 FFmpeg 可執行文件路徑*/public FFmpegVideoConverter(String ffmpegPath) {this.ffmpegPath = ffmpegPath;}/*** 將視頻轉換為 MP4 格式* @param inputFilePath  輸入視頻文件路徑* @param outputFilePath 輸出 MP4 文件路徑* @return 轉換成功返回 true,失敗返回 false*/public boolean convertToMP4(String inputFilePath, String outputFilePath) {try {// 構建 FFmpeg 命令List<String> command = new ArrayList<>();// ffmpegPath 為在linux安裝好的執行命令 我所在的位置為 /opt/ffmpeg-5.1.1-amd64-static/ffmpegcommand.add(ffmpegPath);command.add("-i");// 源視頻所在位置command.add(inputFilePath);command.add("-c:v");command.add("libx264");      // 使用 H.264 視頻編碼command.add("-preset");command.add("medium");       // 編碼速度與壓縮比平衡command.add("-crf");command.add("23");           // 視頻質量,數值越小質量越高 (0-51)command.add("-c:a");command.add("aac");          // 使用 AAC 音頻編碼command.add("-strict");command.add("experimental"); // 允許使用實驗性編解碼器command.add("-b:a");command.add("128k");         // 音頻比特率command.add("-movflags");command.add("faststart");    // 優化 MP4 文件以便網絡播放command.add("-y");           // 覆蓋已存在的文件// 新文件所在位置command.add(outputFilePath);// 執行命令ProcessBuilder processBuilder = new ProcessBuilder(command);processBuilder.redirectErrorStream(true); // 合并標準輸出和錯誤輸出Process process = processBuilder.start();// 讀取命令輸出InputStream inputStream = process.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String line;while ((line = reader.readLine()) != null) {System.out.println(line); // 可替換為日志記錄}// 等待命令執行完成int exitCode = process.waitFor();return exitCode == 0;} catch (IOException | InterruptedException e) {e.printStackTrace();return false;}}public static void main(String[] args) {// 設置 FFmpeg 路徑(根據實際情況修改)String ffmpegPath = "/usr/bin/ffmpeg"; // Linux/Mac// String ffmpegPath = "C:\\ffmpeg\\bin\\ffmpeg.exe"; // Windows// 創建轉換器實例FFmpegVideoConverter converter = new FFmpegVideoConverter(ffmpegPath);// 輸入和輸出文件路徑String inputFile = "input.avi";    // 替換為實際輸入文件String outputFile = "output.mp4";  // 替換為實際輸出文件// 執行轉換boolean success = converter.convertToMP4(inputFile, outputFile);// 輸出結果if (success) {System.out.println("視頻轉換成功!");} else {System.out.println("視頻轉換失敗!");}}
}

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

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

相關文章

一個簡單的腳本,讓pdf開啟夜間模式

因為平常我比較喜歡晚上看面試題。 市面上很多的面試題pdf都是白色的晚上看的話非常的刺眼。 所以我本能的去互聯網搜索看看有沒有pdf轉換為夜間模式的。 搜索了一段時間后發現并沒有這種東西。于是我自己做了一個轉換的python腳本。 import os import fitz # PyMuPDF from P…

Flink OceanBase CDC 環境配置與驗證

一、OceanBase 數據庫核心配置 1. 環境準備與版本要求 版本要求&#xff1a;OceanBase CE 4.0 或 OceanBase EE 2.2組件依賴&#xff1a;需部署 LogProxy 服務&#xff08;社區版/企業版部署方式不同&#xff09;兼容模式&#xff1a;支持 MySQL 模式&#xff08;默認&#x…

c++對象池

【設計模式】其它經典模式-對象池模式&#xff08;Object Pool Pattern&#xff09;-CSDN博客 在C中&#xff0c;對象池&#xff08;Object Pool&#xff09;是一種管理對象生命周期的技術&#xff0c;旨在減少對象創建和銷毀的開銷&#xff0c;提高性能。對象池預先分配一定數…

JavaFX:Scene(場景)

簡介 Scene對象是JavaFX場景圖的根(root)。JavaFX 場景中包含所有可視的 JavaFX GUI 組件。JavaFX 場景由javafx.scene.Scene類表示。必須在 Stage(舞臺)上設置 Scene 對象才能使其可見。在本 JavaFX Scene 教程中,將向您展示如何創建 Scene 對象并向其添加 GUI 組件。 創…

vue3.4中的v-model的用法~

1.首先以前我們針對父子組件傳參是不是通過defineProps與defineEmits來實現的&#xff0c;但是這么比較繁瑣&#xff0c;因為他是單向傳參&#xff0c;而不是雙向的&#xff0c;這里我們要介紹的是vue3.4的v-model來實現雙向數據傳遞。 2、代碼示例&#xff1a; //父組件 <…

nvm常用指令匯總

nvm是用來管理nodejs的&#xff0c;可以方便安裝、切換、卸載當前環境的node版本。 以下是常用指令匯總&#xff1a;nvm list 查看本機已經安裝的node版本。*表示當前系統正在使用的node版本nvm install xx.xx.x 后邊加版本號&#xff0c;表示安裝指定的版本nvm use xx.xx.x當前…

洛谷P5021 [NOIP 2018 提高組] 賽道修建【題解】【二分答案+樹上貪心】

P5021 [NOIP 2018 提高組] 賽道修建 題意簡述 給定一棵含 n n n 個點的無向帶權樹&#xff0c;求將其分裂為 m m m 條鏈后&#xff0c;最短的一條鏈的最大長度是多少&#xff1f; 點可以重復使用&#xff0c;邊不可以重復使用。 思路 二分答案貪心判定貌似可以&#xff…

Portal認證過程雜談

Portal認證模型簡介 Portal認證模型通常由這四個設備組成 認證服務器即3A服務器&#xff0c;通常用radius服務器 接入設備通常就是NAC設備&#xff08;網絡接入控制&#xff09; Portal服務器就是Portal認證的認證網站&#xff08;通常叫門戶網站&#xff09; 認證過程簡述…

ZSGuardian ---AI賦能,新一代研發管理守護平臺 -即將上線

一場研發管理的革命 在數字化浪潮奔涌向前的今天&#xff0c;軟件開發與產品研發的節奏不斷加快&#xff0c;市場需求瞬息萬變&#xff0c;技術迭代日新月異。對于研發團隊而言&#xff0c;如何在復雜多變的環境中&#xff0c;高效地管理項目、保障產品質量、確保按時上線&…

小菜狗的云計算之旅,學習了解rsync+sersync實現數據實時同步(詳細操作步驟)

Rsyncsersync實現數據實時同步 目錄 Rsyncsersync實現數據實時同步 一、rsync概述 二、rsync運行原理 三、rsync部署 四、備份測試 五、使用非系統用戶備份數據 5.1 rsync的配置文件介紹 5.2 配置備份目錄 5.3 使用rsync用戶備份測試 5.4 pull拉取數據 六、rsyncse…

牛客周賽Round 99(Go語言)

A題 (A.go) 思路總結: 這道題要求判斷一個整數中是否包含連續的兩個9。 核心思路是將輸入的整數轉換為字符串&#xff0c;然后遍歷這個字符串&#xff0c;檢查是否存在相鄰的兩個字符都是9。如果找到了&#xff0c;就立即停止遍歷并輸出"YES"&#xff1b;如果遍歷完…

紅外圖像小目標檢測熱力圖可視化系統

原創代碼&#xff0c;可以工程修改含界面。

供應鏈管理:指標評估方式分類與詳解

一、指標評估方式分類與詳解 評估維度評估方式核心方法適用場景示例數據來源內部數據評估從企業ERP、MES、CRM等系統提取生產、財務、客戶等數據。成本、效率、質量等內部管理指標評估。生產成本數據&#xff08;MES系統&#xff09;、客戶滿意度&#xff08;CRM系統&#xff…

基于 Rust 的前端工具基本實現

1. Rust 環境安裝 1.1. 安裝 Rust Rust 提供了一個非常方便的安裝工具 rustup,可以通過以下命令安裝 Rust: curl --proto =https --tlsv1.2 -sSf https://sh.rustup.rs | sh 這個命令會安裝 Rust 編譯器 rustc、包管理工具 cargo 以及其他相關工具。 1.2. 配置環境變量 …

大模型關鍵字解釋

&#x1f4a1; 一、模型結構關鍵詞 1. Transformer Transformer 是一種專門用來“理解文字”的神經網絡結構。就像一個聰明的秘書&#xff0c;能同時看懂整段話的所有詞之間的關系&#xff0c;而不是像老式模型那樣一句一句讀。 &#x1f449; 舉例&#xff1a;以前的模型像…

空調和烘干機的使用

開關 制冷 選擇上下掃風 那個就下來了 烘干機 電源鍵 長按3s以上直到菜單顯示 選擇小件 不要快烘 至少1個半小時 才可以烘干

極簡的神經網絡反向傳播例子

我之前一直沒搞清楚&#xff0c;神經網絡為什么要求導&#xff1f;反向傳播又是什么&#xff1f;于是到現在深究回來…… 本質就是擬合一個未知函數。 高中的數理統計就學過最小二乘法這種回歸方法&#xff08;? 代表自己的預測y&#xff0c;這個表達要記住&#xff09;&…

01-什么是強化學習

什么是強化學習 1. 定義 強化學習&#xff08;Reinforcement Learning, RL&#xff09;是一種使智能體&#xff08;Agent&#xff09;通過與環境&#xff08;Environment&#xff09;不斷交互&#xff0c;學習如何在不同情境下采取行動以獲得最大化累積獎勵的機器學習方法。 強…

淘寶直播數字人:音視頻算法工程技術

本專題是我們打造智能數字人的部分實踐總結。我們將探討六大核心環節&#xff1a;LLM文案生產賦予數字人思考和內容生成能力&#xff0c;如同其“大腦”&#xff1b;LLM互動能力則聚焦對話邏輯與擬人化交流&#xff0c;是實現自然交互的關鍵&#xff1b;TTS&#xff08;語音合成…

MySQL回表查詢深度解析:原理、影響與優化實戰

引言 作為后端開發或DBA&#xff0c;你是否遇到過這樣的場景&#xff1a; 明明給字段加了索引&#xff0c;查詢還是慢&#xff1f;EXPLAIN一看&#xff0c;執行計劃里type是ref&#xff0c;但數據量不大卻耗時很久&#xff1f; 這時候&#xff0c;你很可能遇到了MySQL中常見的…