Ffmpeg安裝和簡單使用

Ffmpeg安裝

下載并解壓

進入官網 (https://ffmpeg.org/download.html),選擇 Window

image-20240606132009520

然后再打開的頁面中下滑找到 release builds,點擊 zip 文件下載

image-20240606132116466

環境變量配置

下載好之后解壓,找到 bin 文件夾,里面有3個 .exe 文件

image-20240606132416557

image-20240606132445125

然后復制這個 bin 目錄地址

image-20240606132543962

然后再環境變量中的 Path 中添加保存即可

image-20240606132700052

測試運行

打開cmd,輸入 ffmpeg -version 測試

image-20240606132806315

mp4轉ts文件

命令

ffmpeg -y -i 你的視頻地址.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb ts文件輸出地址.ts

參數解釋

  1. ffmpeg:
    • 命令行工具的名稱,用于處理多媒體文件。
  2. -y:
    • 這個選項告訴 ffmpeg 在輸出文件已存在時,無需提示直接覆蓋目標文件。
  3. -i 你的視頻地址.mp4:
    • -i 表示輸入文件。
    • 你的視頻地址.mp4 是輸入視頻文件的路徑或文件名。
  4. -vcodec copy:
    • -vcodec-c:v 指定視頻編解碼器。
    • copy 表示直接復制視頻流而不重新編碼。
  5. -acodec copy:
    • -acodec-c:a 指定音頻編解碼器。
    • copy 表示直接復制音頻流而不重新編碼。
  6. -bsf:v h264_mp4toannexb:
    • -bsf:v 表示對視頻流應用位流過濾器(Bitstream Filter)。
    • h264_mp4toannexb 是具體的位流過濾器,作用是將 H.264 內容從 MP4 的格式轉換為 TS 中使用的 Annex B 格式。這是因為 MP4 中 H.264 使用的是一種不同的封裝格式,不適合直接存儲在 TS 容器中。
  7. ts文件輸出地址.ts:
    • 指定輸出文件的路徑或文件名,這里是一個 TS 格式文件。

示例

ffmpeg -y -i D:\javaLogs\filePan\files\114\大屏視頻.mp4 -vcodec copy -acodec copy -bsf:v h264_mp4toannexb D:\javaLogs\filePan\files\114\大屏視頻.ts

image-20240606133638014

運行結果

image-20240606133724706

生成索引文件.m3u8和切片.ts

在處理視頻在線播放時可以將一個大的ts視頻文件切成多個小的ts文件,并生成一個m3u8索引文件

命令

ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_list list.m3u8 -segment_time 60 output_dir/output_%04d.ts
  • input.mp4: 輸入文件。
  • -c copy: 對視頻和音頻流進行無損復制。
  • -map 0: 映射所有流。
  • -f segment: 使用 segment 多路復用器。
  • -segment_list list.m3u8: 生成包含所有片段文件名的播放列表文件,這里用 m3u8 格式。
  • -segment_time 60: 每個片段的時長為 60 秒。
  • output_dir/output_%04d.ts: 輸出的片段文件(存放在 output_dir 目錄,命名為 output_0000.ts, output_0001.ts 等)。

示例

mkdir D:\javaLogs\filePan\files\114\大屏視頻ffmpeg -i D:\javaLogs\filePan\files\114\大屏視頻.mp4 -c copy -map 0 -f segment -segment_list D:\javaLogs\filePan\files\114\大屏視頻\index.m3u8 -segment_time 60 D:\javaLogs\filePan\files\114\大屏視頻\output_%04d.ts

image-20240606134846828

輸出的內容

image-20240606134901650

image-20240606134917844

生成視頻縮略圖

使用 ffmpeg 生成視頻縮略圖是一項常見任務。在下面的例子中,我將向你展示如何從視頻中生成一張或多張縮略圖。

生成單個縮略圖

假設你希望從視頻的特定時間幀生成一張縮略圖,例如在視頻的第 30 秒生成縮略圖,命令如下:

ffmpeg -i 你的視頻地址.mp4 -ss 00:00:30 -vframes 1 -q:v 2 縮略圖輸出路徑.jpg

參數解釋

  • -i 你的視頻地址.mp4: 輸入視頻文件。
  • -ss 00:00:30: 定位到視頻的第 30 秒。也可以使用更精確的時間格式,比如 00:01:30.500 表示 1 分 30 秒之后的第 500 毫秒。
  • -vframes 1: 指定只輸出一幀圖片。
  • -q:v 2: 設置輸出圖片的質量。數值范圍為 1-31,數值越小質量越高,2 是一個常用的高質量值。
  • 縮略圖輸出路徑.jpg: 輸出圖片的路徑和文件名。

生成多張縮略圖

如果你希望從視頻中定時生成多張縮略圖,例如每隔 10 秒生成一張,命令如下:

ffmpeg -i 你的視頻地址.mp4 -vf "fps=1/10" 縮略圖輸出路徑_%03d.jpg

參數解釋

  • -i 你的視頻地址.mp4: 輸入視頻文件。
  • -vf "fps=1/10": 使用視頻過濾器,每 10 秒生成一幀圖片(1/10 表示每 1/10 秒生成一幀)。
  • 縮略圖輸出路徑_%03d.jpg: 輸出圖片的路徑和文件名,%03d 會被替換為當前幀號,生成一系列的圖片如 縮略圖輸出路徑_001.jpg縮略圖輸出路徑_002.jpg 等。

示例

以下是示例命令:

生成單個縮略圖

ffmpeg -i video.mp4 -ss 00:00:30 -vframes 1 -q:v 2 thumbnail.jpg

image-20240606135440862

image-20240606135505526

生成多張縮略圖,每30秒生成一張

ffmpeg -i video.mp4 -vf "fps=1/30" thumbnails_%03d.jpg

image-20240606135729964

image-20240606135754971

視頻壓縮

使用 ffmpeg 壓縮視頻是一項常見任務,尤其是在需要減小文件大小以便于存儲或傳輸時。以下是幾個基本的例子,涵蓋常見的壓縮場景。

  1. 使用 H.264 編碼器壓縮視頻

H.264 是一種常用的高效視頻壓縮標準。你可以使用如下命令將視頻壓縮為 H.264 格式:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

參數解釋

  • -i input.mp4: 輸入視頻文件。
  • -vcodec libx264: 使用 H.264 編碼器。
  • -crf 23: 恒定質量因子,范圍為 0(無損)到 51(最差),默認值是 23。數值越小,質量越好,文件越大。數值越大,文件越小,質量越低。
  • -preset medium: 預設參數,決定編碼速度與壓縮率之間的平衡。常用預設有 ultrafastsuperfastveryfastfasterfastmediumslowslowerveryslowmedium 是默認值。
  1. 壓縮視頻并降低分辨率

如果你不僅想要壓縮視頻文件大小,還希望降低分辨率,可以使用下面的命令:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

參數解釋

  • -vf scale=1280:720: 調整視頻分辨率為 1280x720。你可以根據需要設置其他分辨率。
  1. 壓縮視頻并降低比特率

如果你希望控制視頻的比特率,可以使用如下命令:

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

參數解釋

  • -b:v 1000k: 設置視頻比特率為 1000 kbps。你可以根據需要調整這個值。
  1. 壓縮視頻音頻

如果你希望同時壓縮視頻和音頻,可以添加音頻參數:

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

參數解釋

  • -acodec aac: 使用 AAC 音頻編碼器。
  • -b:a 128k: 設置音頻比特率為 128 kbps。

示例命令

使用 H.264 編碼壓縮視頻

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium output.mp4

壓縮視頻并降低分辨率

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -vf scale=1280:720 output.mp4

壓縮視頻并設置比特率

ffmpeg -i input.mp4 -b:v 1000k -vcodec libx264 -preset medium output.mp4

同時壓縮視頻和音頻

ffmpeg -i input.mp4 -vcodec libx264 -crf 23 -preset medium -acodec aac -b:a 128k output.mp4

運行這些命令時,請確保輸入文件路徑正確,并且你有輸出目錄的寫入權限

圖片生成縮略圖

使用ffmpeg生成縮略圖

以下是使用ffmpeg生成128x128像素縮略圖的命令:

ffmpeg -i input.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

參數解釋

  • -i input.jpg:輸入圖片文件。
  • -vf "thumbnail,scale=128:128":使用縮略圖濾鏡和縮放濾鏡,將圖片縮放至128x128像素。
  • -frames:v 1:僅輸出一幀圖像。
  • output_thumbnail.jpg:生成的縮略圖文件名。

示例

ffmpeg -i ./大屏視頻.jpg -vf "thumbnail,scale=128:128" -frames:v 1 output_thumbnail.jpg

image-20240606141411531

image-20240606141426973

更多其他用法

可參考:https://blog.csdn.net/m0_37624402/article/details/125123818

官方文檔:https://ffmpeg.org/ffmpeg.html#Options

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

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

相關文章

中國互聯網第一人的故事__許榕生的不平凡的經歷

中國互聯網第一人的故事__許榕生的不平凡的經歷 目錄 零 高考之際談高考成功者 一 幸運的高考考生 二 抓住時機考研上岸 三 當年連接互聯網的經過 四 互聯網進入中國的緣由 五 互聯網一誕生就顯神威 六 互聯網強國之路,我們在路上 零…

優思學院|六西格瑪黑帶官方的報考條件是什么?

經常有人私信問我六西格瑪黑帶證書要如何取得,要學歷證明嗎?要帶項目嗎?要注冊嗎? 首先,直接一點說,和任何學科一樣,取得六西格瑪證書的方法主要是通過上課學習和考試。然而,關于六…

fastapi實例

quick start 安裝 pip install fastapi# ASGI服務器,生成環境可以使用uvicorn pip install uvicorn代碼 from fastapi import FastAPI import uvicorn# 創建一個app實例 app FastAPI()# 編寫一個路徑操作裝飾器 app.get("/") # 編寫一個路徑操作函數 …

【ARM Cache 及 MMU 系列文章 6.2 -- ARMv8/v9 Cache 內部數據讀取方法詳細介紹】

請閱讀【ARM Cache 及 MMU/MPU 系列文章專欄導讀】 及【嵌入式開發學習必備專欄】 文章目錄 Direct access to internal memoryL1 cache encodingsL1 Cache Data 寄存器Cache 數據讀取代碼實現Direct access to internal memory 在ARMv8架構中,緩存(Cache)是用來加速數據訪…

Apple開發者macOS描述文件創建

1.選擇Profiles然后點擊加號創建 2.選擇類型為macOS App Development然后點擊繼續 3.選擇描述類型與App ID 然后點擊繼續 4.選擇證書然后點擊繼續 5.選擇設備,然后點擊繼續 6.輸入描述文件后,點擊生成 生成成功,點擊下載描述文件 下載完成會自動打開描述文件

評判基金的重要指標(一):最大回撤率

評判基金的重要指標(一):最大回撤率 財富奇跡創造者2023-06-14 08:00山西 問:如果要投資一只基金,如何衡量自己可能面對的風險呢? 答:衡量一個策略的風險控制能力,“最大回撤”是…

Facechain系列: 通過代碼進行推理

進行推理時,需要編輯run_inference.py中的代碼。為了避免人物肖像的版權問題,文章中使用的圖片不是由FaceChain實際生成的圖片,特此說明。 1. 以下代碼適用于Linux系統,如果希望在Windows系統中運行, folder_path f…

lm studio 0.2.24國內下載模型

1.修改C:\Users\Admin\AppData\Local\LM-Studio\app-0.2.24\resources\app\.webpack\main中的3個js文件: index.js llmworker.js worker.js 中替換huggingface.co為hf-mirror.com。這樣就能實現搜索模型文件 2.點擊模型,選擇下載,出現下載…

C語言小例程6/100

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。 程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值…

docker安裝和使用

1. docker-ce Docker Community Edition (CE): 功能: 這是 Docker 的主要組件,用于創建、管理和運行容器。它包括 Docker 守護進程 (dockerd),該守護進程負責處理容器的生命周期,包括創建、啟動、停止和刪除容器。用途: 允許用戶在其系統上…

T-Rex2: Towards Generic Object Detection via Text-Visual Prompt Synergy論文解讀

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、引言二、文獻綜述1. Text-prompted Object Detection2. Visual-prompted Object Detection3. Interactive Object Detection 三、模型方法1. Visual-Text P…

Docker自定義鏡像實現(SpringBoot程序為例)

?作者簡介:大家好,我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式,持續分享Java技術內容。🍎個人主頁:Meteors.的博客💞當前專欄:知識備份?特色專欄:知識分享&#x1f96…

Java核心: 為圖片生成水印

今天干了一件特別不務正業的事,做了一個小程序用來給圖片添加水印。事情的起因是需要將自己的身份證照片分享給別人,手邊并沒有一個趁手的工具來生成圖片水印。很多APP提供了水印的功能,但會把我的圖片上傳到他們的服務器,身份證太…

AdSet通過審核并入駐全國SDK管理服務平臺

SDK、API、H5是三種常見的APP廣告接入方式,目前市面上使用最廣泛的還是SDK對接,通過使用廣告SDK,App開發者可以在App中展示廣告商投放的廣告,進而根據用戶的點擊賺取收益。具備一定規模流量、想快速獲得收益的APP開發者都會考慮接…

使用#sortablejs插件對表格中拖拽行排序#Vue3#后端接口數據

使用#sortablejs對表格中拖拽行排序#Vue3#后端接口數據 *效果&#xff1a; 拖動表格行排序 首先安裝插件sortable npm install sortablejs --save代碼&#xff1a; <template><!-- sortable.js 進行表格排序 --><!-- 演示地址 --><div class"dem…

618值得推薦的洗地機有哪些?附上最全洗地機選購攻略

洗地機的出現&#xff0c;讓家庭清潔變得越來越高效&#xff0c;它省時省力的洗地方式&#xff0c;自帶水箱和除菌模式&#xff0c;還能減輕我們家庭清潔的負擔&#xff0c;但由于目前市面上家用洗地機品牌和種類眾多&#xff0c;讓大家挑選起來比較困難。那么家用洗地機哪個品…

Go微服務: 關于分布式系統中的常見問題,分布式事務,以及常用解決方案

概述 在當今的互聯網時代&#xff0c;分布式系統已成為支撐大規模服務、高并發和高性能應用的基石它們通過網絡連接多臺計算機&#xff0c;協同工作&#xff0c;共同完成任務&#xff0c;但這也引入了諸如數據一致性、網絡延遲、容錯性等挑戰解決這些問題的關鍵在于設計和實施…

String,StringBuffer,StringBuilder的區別?

String是不可變的&#xff0c;StringBuffer和StringBuilder是可變的。StringBuffer是線程安全的&#xff0c;StringBuilder是非線程安全的。 String的 是如何實現的 使用拼接字符串&#xff0c;其實只是Java提供的一個語法糖。 其實String的 底層是new 了一個StringBuilde…

ssh遠程管理

SSH遠程管理 ssh是一種安全通道協議&#xff0c;只能用來實現字符界面的遠程登錄。遠程復制&#xff0c;遠程文本傳輸。 ssh對通信雙方的數據進行了加密。 用戶名和密碼登錄 密鑰對認證方式&#xff08;可以實現免密登錄&#xff09; ssh 端口號22 網絡層 傳輸層 數據傳輸…

嵌入式軟件中static的用法

目錄 一、引言 二、static關鍵字的基本用法 四、static的使用場景 五、總結 一、引言 在嵌入式軟件開發中&#xff0c;static是一個至關重要的關鍵字&#xff0c;用于控制變量的存儲周期和可見性&#xff0c;以及函數的可見性。本報告將全面介紹static在嵌入式C語言編程中…