最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot使用ffmpeg實(shí)現(xiàn)視頻壓縮

 更新時(shí)間:2025年05月30日 11:07:19   作者:程序員Meteor  
FFmpeg?是一個(gè)開(kāi)源的跨平臺(tái)多媒體處理工具集,用于錄制,轉(zhuǎn)換,編輯和流式傳輸音頻和視頻,本文將使用ffmpeg實(shí)現(xiàn)視頻壓縮功能,有需要的可以參考下

FFmpeg 是一個(gè)開(kāi)源的跨平臺(tái)多媒體處理工具集,用于錄制、轉(zhuǎn)換、編輯和流式傳輸音頻和視頻。它功能強(qiáng)大,支持幾乎所有常見(jiàn)的音視頻格式,是多媒體處理領(lǐng)域的核心工具之一。

官方文檔:https://ffmpeg.org/documentation.html

核心功能

1.格式轉(zhuǎn)換

支持幾乎所有音視頻格式(如 MP4、AVI、MOV、MKV、MP3、AAC 等)的互相轉(zhuǎn)換。

示例:

ffmpeg -i input.mp4 output.avi

2.編解碼

支持 H.264、H.265(HEVC)、VP9、AAC、Opus 等編解碼器。

可指定編碼參數(shù)(如碼率、幀率、分辨率等)。

示例:

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

3.音視頻處理

剪切、合并、提取音視頻流。

調(diào)整分辨率、幀率、音量等。

示例:

# 剪切視頻(從第10秒開(kāi)始,截取5秒)
ffmpeg -i input.mp4 -ss 00:00:10 -t 5 output.mp4

4.流媒體支持

支持 RTMP、HLS、DASH 等流媒體協(xié)議,可用于直播推流或拉流。

示例:

# 推流到RTMP服務(wù)器
ffmpeg -i input.mp4 -c:v libx264 -f flv rtmp://server/live/stream_key

5.濾鏡(Filter)

添加水印、縮放、旋轉(zhuǎn)、降噪、字幕嵌入等。

示例:

# 添加文字水印
ffmpeg -i input.mp4 -vf "drawtext=text='Hello':x=10:y=10:fontsize=24:fontcolor=white" output.mp4

安裝配置

linux安裝

sudo yum install epel-release
sudo yum install ffmpeg
# 驗(yàn)證
ffmpeg -version

windows安裝

官網(wǎng)地址:https://ffmpeg.org/download.html#build-windows

下載地址:https://www.gyan.dev/ffmpeg/builds/

下載上面兩個(gè)都可以,一個(gè)是全量包,一個(gè)是必要包,下載后解壓到你的目錄

環(huán)境變量配置:在 系統(tǒng)變量 中找到 Path,點(diǎn)擊 編輯,添加FFmpeg的 bin 目錄路徑,保存后使用 ffmpeg -version 驗(yàn)證

代碼實(shí)現(xiàn)

package net.lab1024.sa.base.module.support.file.service;

import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 視頻壓縮工具類
 */
@Slf4j
public class FFmpegVideoCompressionUtil {

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        compressVideo("E:\\Desktop\\video\\old.mp4", "E:\\Desktop\\video\\new.mp4");
        System.out.println("壓縮完成,耗時(shí): " + (System.currentTimeMillis() - startTime) + "ms");
    }

    /**
     * 壓縮視頻
     * @param inputPath 輸入視頻路徑
     * @param outputPath 輸出視頻路徑
     * @return 是否壓縮成功
     */
    public static boolean compressVideo(String inputPath, String outputPath) {
        // 檢查輸入文件是否存在
        File inputFile = new File(inputPath);
        if (!inputFile.exists()) {
            log.error("輸入文件不存在: {}", inputPath);
            return false;
        }

        try {
            // FFmpeg命令
            // -c:v libx264 視頻編碼器使用libx264,兼容性好
            // -profile:v high 更高的壓縮率和視頻質(zhì)量
            // -level 4.0 最大分辨率4k
            // -pix_fmt yuv420p 像素格式為yuv420p,兼容性好且文件體積比yuv444p(無(wú)損)更小
            // -crf 28 控制質(zhì)量(0-51,值越小質(zhì)量越高,默認(rèn)23,建議18-28)
            // -preset fast 調(diào)整編碼速度與壓縮率(可選:ultrafast, superfast, veryfast, fast, medium, slow, slower)
            // -c:a copy 直接復(fù)制原始音頻
            // -r 24 設(shè)置輸出視頻為24幀/秒
            String command = String.format("ffmpeg -i %s -c:v libx264 -profile:v high -level 4.0 -pix_fmt yuv420p -preset fast -crf 28 -c:a copy -r 24 %s", inputPath, outputPath);
            Process process = Runtime.getRuntime().exec(command);

            // 讀取錯(cuò)誤流(FFmpeg的輸出通常通過(guò)錯(cuò)誤流)
            BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line;
            while ((line = errorReader.readLine()) != null) {
                log.info(line);
            }

            int exitCode = process.waitFor();
            if (exitCode == 0) {
                log.info("視頻壓縮成功: {}", outputPath);
                return true;
            } else {
                log.error("視頻壓縮失敗,退出碼: {}", exitCode);
                return false;
            }
        } catch (IOException | InterruptedException e) {
            log.error("執(zhí)行FFmpeg命令出錯(cuò)", e);
            return false;
        }
    }

}

到此這篇關(guān)于SpringBoot使用ffmpeg實(shí)現(xiàn)視頻壓縮的文章就介紹到這了,更多相關(guān)SpringBoot ffmpeg視頻壓縮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?NumPy實(shí)用函數(shù)筆記之a(chǎn)llclose

    Python?NumPy實(shí)用函數(shù)筆記之a(chǎn)llclose

    這篇文章主要給大家介紹了關(guān)于Python?NumPy實(shí)用函數(shù)筆記之a(chǎn)llclose的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • 詳解Python發(fā)送email的三種方式

    詳解Python發(fā)送email的三種方式

    這篇文章主要介紹了詳解Python發(fā)送email的三種方式,Python發(fā)送email的三種方式,分別為使用登錄郵件服務(wù)器、使用smtp服務(wù)、調(diào)用sendmail命令來(lái)發(fā)送三種方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • python爬蟲(chóng)超時(shí)的處理的實(shí)例

    python爬蟲(chóng)超時(shí)的處理的實(shí)例

    今天小編就為大家分享一篇python爬蟲(chóng)超時(shí)的處理的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python?中的lambda匿名函數(shù)和三元運(yùn)算符

    Python?中的lambda匿名函數(shù)和三元運(yùn)算符

    這篇文章主要介紹了Python?中的lambda匿名函數(shù)和三元運(yùn)算符,使用關(guān)鍵字???lambda???定義,所以匿名函數(shù)又稱之為lambda表達(dá)式,下面文章更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • Python爬蟲(chóng)庫(kù)urllib的使用教程詳解

    Python爬蟲(chóng)庫(kù)urllib的使用教程詳解

    Python?給人的印象是抓取網(wǎng)頁(yè)非常方便,提供這種生產(chǎn)力的,主要依靠的就是?urllib、requests這兩個(gè)模塊。本文主要給大家介紹一下urllib的使用,感興趣的可以了解一下
    2022-11-11
  • Python干貨:分享Python繪制六種可視化圖表

    Python干貨:分享Python繪制六種可視化圖表

    可視化圖表有很多種,這篇文章主要介紹了Python繪制六種可視化圖表詳解的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • pyqt和pyside開(kāi)發(fā)圖形化界面

    pyqt和pyside開(kāi)發(fā)圖形化界面

    選擇PyQt或PySide來(lái)開(kāi)發(fā)圖形界面是因?yàn)镻ython和Qt的跨平臺(tái)特性,Qt5甚至支持iOS和Android,并且開(kāi)發(fā)相同的軟件,Python的效率是極高的,下面看使用示例
    2014-01-01
  • python經(jīng)典百題之static定義靜態(tài)變量的三種方法

    python經(jīng)典百題之static定義靜態(tài)變量的三種方法

    日常腳本編寫(xiě)過(guò)程中時(shí)常會(huì)用到python的靜態(tài)方法、實(shí)例方法、類方法,下面這篇文章主要給大家介紹了關(guān)于python經(jīng)典百題之static定義靜態(tài)變量的三種方法,需要的朋友可以參考下
    2024-09-09
  • Windows下為Python安裝Matplotlib模塊

    Windows下為Python安裝Matplotlib模塊

    這篇文章主要介紹了如何在Windows下為Python安裝Matplotlib模塊的方法,非常的詳細(xì),而且附上了官方的下載地址,小伙伴們操作起來(lái)應(yīng)該毫無(wú)壓力了。
    2015-11-11
  • Python Pandas高級(jí)教程之時(shí)間處理

    Python Pandas高級(jí)教程之時(shí)間處理

    我們發(fā)現(xiàn)關(guān)于時(shí)間日期的簡(jiǎn)單計(jì)算很多功能都是datetime庫(kù)提供的,那么pandas有沒(méi)有提供跟日期時(shí)間有關(guān)的函數(shù),通過(guò)下面文章來(lái)了解下,這篇文章主要給大家介紹了關(guān)于Python Pandas高級(jí)教程之時(shí)間處理的相關(guān)資料,需要的朋友可以參考下
    2021-10-10

最新評(píng)論

阳朔县| 腾冲县| 抚顺县| 墨玉县| 阜平县| 泽州县| 泸定县| 德保县| 南郑县| 民丰县| 临漳县| 虎林市| 曲阜市| 揭西县| 泸溪县| 天祝| 乌海市| 和林格尔县| 赤城县| 兰考县| 日喀则市| 彰武县| 东台市| 那曲县| 惠州市| 泾源县| 晴隆县| 安多县| 英德市| 华亭县| 昭觉县| 汪清县| 渭南市| 望奎县| 措勤县| 定陶县| 安陆市| 万荣县| 沙洋县| 綦江县| 旌德县|