SpringBoot使用ffmpeg實(shí)現(xiàn)視頻壓縮
FFmpeg 是一個(gè)開源的跨平臺(tái)多媒體處理工具集,用于錄制、轉(zhuǎn)換、編輯和流式傳輸音頻和視頻。它功能強(qiáng)大,支持幾乎所有常見的音視頻格式,是多媒體處理領(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秒開始,截取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(無損)更小 // -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的輸出通常通過錯(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python下使用Scrapy爬取網(wǎng)頁內(nèi)容的實(shí)例
今天小編就為大家分享一篇Python下使用Scrapy爬取網(wǎng)頁內(nèi)容的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05TensorFlow實(shí)現(xiàn)iris數(shù)據(jù)集線性回歸
這篇文章主要介紹了TensorFlow實(shí)現(xiàn)iris數(shù)據(jù)集線性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09python模塊與C和C++動(dòng)態(tài)庫相互調(diào)用實(shí)現(xiàn)過程示例
這篇文章主要為大家介紹了python模塊與C和C++動(dòng)態(tài)庫之間相互調(diào)用的實(shí)現(xiàn)過程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11Python之torch.no_grad()函數(shù)使用和示例
這篇文章主要介紹了Python之torch.no_grad()函數(shù)使用和示例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03django連接Mysql中已有數(shù)據(jù)庫的方法詳解
眾所周知Django較為適合原生開發(fā),即通過該框架搭建一個(gè)全新的項(xiàng)目,通過在修改models.py來創(chuàng)建新的數(shù)據(jù)庫表,下面這篇文章主要給大家介紹了關(guān)于django連接Mysql中已有數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2022-05-05Python實(shí)現(xiàn)直方圖均衡基本原理解析
這篇文章主要介紹了Python實(shí)現(xiàn)直方圖均衡基本原理,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08