【ffmpeg命令入門】重新編碼媒體流、設置碼率、設置幀速率

文章目錄

  • 前言
  • ffmpeg的描述
  • 重新編碼媒體流
    • 重新編碼媒體流的命令
      • ffmpeg支持的媒體流
  • 設置視頻碼率
    • 視頻碼率是什么
    • 設置視頻的碼率
  • 設置文件幀數率
    • 幀數率是什么
    • ffmpeg設置幀數率
  • 總結


前言

在數字媒體處理領域,ffmpeg是一款非常強大的工具,它可以用來進行媒體流的重新編碼、設置碼率、設置幀速率等操作。ffmpeg的功能強大且復雜,但是一旦掌握了其基本的使用方法,就能夠靈活地處理各種媒體文件,滿足各種需求。


ffmpeg的描述

ffmpeg是一款通用的媒體轉換工具,它可以讀取各種類型的輸入(包括實時抓取/錄制設備),進行過濾,并將它們轉換成各種輸出格式。

ffmpeg可以從任意數量的輸入"文件"中讀取數據,這些文件可以是常規文件、管道、網絡流、抓取設備等,這些都是通過-i選項指定的。ffmpeg可以寫入任意數量的輸出"文件",這些文件是通過一個普通的輸出url指定的。命令行上找到的任何不能被解釋為選項的內容都被視為輸出url。

每個輸入或輸出url原則上可以包含任意數量和類型(視頻/音頻/字幕/附件/數據)的流。流的數量和/或類型可能受到容器格式的限制。選擇哪些流從哪些輸入進入哪個輸出要么自動完成,要么通過-map選項完成。

在選項中引用輸入文件時,你必須使用它們的索引(從0開始)。例如,第一個輸入文件是0,第二個是1,等等。同樣,文件內的流也是通過它們的索引引用的。例如,2:3指的是第三個輸入文件中的第四個流。

作為一般規則,選項應用于下一個指定的文件。因此,順序很重要,你可以在命令行上多次使用同一個選項。每次出現的選項都會應用于下一個輸入或輸出文件。此規則的例外是全局選項(例如,詳細程度級別),這些選項應該首先被指定。

不要混合輸入和輸出文件 - 首先指定所有輸入文件,然后指定所有輸出文件。也不要混合屬于不同文件的選項。所有選項僅適用于下一個輸入或輸出文件,并在文件之間重置。

重新編碼媒體流

重新編碼媒體流的命令

我們可以使用ffmpeg把任意他支持的媒體流變成另一個他支持的媒體流,就像這樣:

ffmpeg -i input.mp4 output.avi

在這里插入圖片描述

D:\Codes\ffmpeg_Command>ffmpeg -i test.mp4 out1.avi

ffmpeg支持的媒體流

FFmpeg支持的文件后綴非常多,包括但不限于以下幾種:

  1. 視頻格式.mp4.avi.flv.mov.mkv.wmv.3gp等。
  2. 音頻格式.mp3.wav.aac.flac.ogg.m4a等。
  3. 封裝格式.ts.m3u8(用于HLS流)等。
  4. 圖像格式.jpg.png.bmp.gif等。

你可以通過ffmpeg -formats命令來獲取FFmpeg所支持的所有文件類型

D:\Codes\ffmpeg_Command>ffmpeg -formats
ffmpeg version 7.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developersbuilt with gcc 13.2.0 (Rev5, Built by MSYS2 project)configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberbandlibavutil      59.  8.100 / 59.  8.100libavcodec     61.  3.100 / 61.  3.100libavformat    61.  1.100 / 61.  1.100libavdevice    61.  1.100 / 61.  1.100libavfilter    10.  1.100 / 10.  1.100libswscale      8.  1.100 /  8.  1.100libswresample   5.  1.100 /  5.  1.100libpostproc    58.  1.100 / 58.  1.100
Formats:D.. = Demuxing supported.E. = Muxing supported..d = Is a device---D   3dostr          3DO STRE  3g2             3GP2 (3GPP2 file format)E  3gp             3GP (3GPP file format)D   4xm             4X TechnologiesE  a64             a64 - video for Commodore 64D   aa              Audible AA format filesD   aac             raw ADTS AAC (Advanced Audio Coding)D   aax             CRI AAXDE  ac3             raw AC-3DE  ac4             raw AC-4D   ace             tri-Ace Audio ContainerD   acm             Interplay ACMD   act             ACT Voice file formatD   adf             Artworx Data FormatD   adp             ADPD   ads             Sony PS2 ADSE  adts            ADTS AAC (Advanced Audio Coding)DE  adx             CRI ADXDE  aea             MD STUDIO audioD   afc             AFCDE  aiff            Audio IFFD   aix             CRI AIXDE  alaw            PCM A-lawD   alias_pix       Alias/Wavefront PIX imageDE  alp             LEGO Racers ALPDE  amr             3GPP AMRD   amrnb           raw AMR-NBD   amrwb           raw AMR-WBE  amv             AMVD   anm             Deluxe Paint AnimationD   apac            raw APACD   apc             CRYO APCD   ape             Monkey's Audio
//后面還有很多,這里不寫出來了

設置視頻碼率

視頻碼率是什么

視頻碼率是指視頻數據的傳輸速率,也就是每秒鐘傳輸的數據量。它通常以比特每秒(bps)或千比特每秒(kbps)為單位來表示。

舉個例子,如果一個視頻的碼率是500 kbps,那么這意味著每秒鐘這個視頻會傳輸500千比特的數據。

視頻碼率對視頻質量有很大的影響。一般來說,碼率越高,視頻質量越好,因為每秒鐘傳輸的數據量更大,能夠展示更多的細節。但是,高碼率的視頻也會占用更多的存儲空間和帶寬。

所以,選擇合適的視頻碼率是一個平衡的過程,需要在視頻質量和存儲空間/帶寬之間做出權衡。

設置視頻的碼率

ffmpeg -i test2.mp4 -b:v 2048k -bufsize 2048k out2.mp4

這個命令是使用FFmpeg將一個輸入的視頻文件input.avi轉換為輸出的視頻文件output.mp4,并在轉換過程中設置視頻流的碼率和緩沖區大小。

具體來說,這個命令的各個部分的含義如下:

  • ffmpeg:這是調用FFmpeg程序的命令。

  • -i input.avi-i選項后面跟的是輸入文件的名稱,這里是input.avi

  • -b:v 2048k:這是設置視頻流的碼率為2048kbps(千比特每秒)。-b:v是指定視頻碼率的選項,2048k是碼率的值。碼率越大,視頻質量越好,但文件大小也會越大。

  • -bufsize 2048k:這是設置碼率控制緩沖區的大小,這里是2048kbps。緩沖區大小可以影響視頻的質量和文件大小。

  • output.mp4:這是輸出文件的名稱,這里是output.mp4

設置文件幀數率

幀數率是什么

幀率,也被稱為幀頻,是用來衡量視頻播放流暢度的一個參數。它表示的是每秒鐘能夠顯示的圖片的數量,單位通常是FPS(Frames Per Second,每秒幀數)。

舉個例子,如果一個視頻的幀率是30 FPS,那就意味著每秒鐘這個視頻會播放30張圖片。這些圖片以足夠快的速度連續播放,使人眼看起來就像是連續的動畫。

一般來說,幀率越高,視頻看起來就越流暢。例如,大多數電影的幀率是24 FPS,而電視節目可能會使用30 FPS或60 FPS。然而,更高的幀率也意味著需要更多的存儲空間和更高的播放要求。

總的來說,幀率是決定視頻播放質量的重要因素之一。

ffmpeg設置幀數率

使用-r選項強制設置幀數率:

ffmpeg -i test2.mp4 -r 144 out3.mp4

過程:

frame=   46 fps=0.0 q=33.0 size=       0KiB time=00:00:00.30 bitrate=   1.3kbits/s dup=73 drop=0 speed=0.5frame=  135 fps=130 q=33.0 size=     256KiB time=00:00:00.92 bitrate=2271.0kbits/s dup=125 drop=0 speed=0.frame=  231 fps=149 q=33.0 size=     512KiB time=00:00:01.59 bitrate=2637.7kbits/s dup=181 drop=0 speed=1.frame=  318 fps=154 q=33.0 size=     768KiB time=00:00:02.19 bitrate=2867.2kbits/s dup=231 drop=0 speed=1.frame=  410 fps=159 q=33.0 size=    1280KiB time=00:00:02.83 bitrate=3701.0kbits/s dup=286 drop=0 speed= 1frame=  509 fps=164 q=33.0 size=    1536KiB time=00:00:03.52 bitrate=3574.0kbits/s dup=343 drop=0 speed=1.frame=  608 fps=168 q=33.0 size=    1792KiB time=00:00:04.20 bitrate=3488.4kbits/s dup=400 drop=0 speed=1.frame=  697 fps=169 q=33.0 size=    2048KiB time=00:00:04.82 bitrate=3476.2kbits/s dup=452 drop=0 speed=1.frame=  797 fps=172 q=33.0 size=    2560KiB time=00:00:05.51 bitrate=3803.5kbits/s dup=511 drop=0 speed=1.frame=  889 fps=172 q=33.0 size=    2816KiB time=00:00:06.15 bitrate=3745.1kbits/s dup=564 drop=0 speed=1.
//省略
[out#0/mp4 @ 0000023746653900] video:14502KiB audio:477KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.512872%
frame= 4330 fps=165 q=-1.0 Lsize=   15056KiB time=00:00:30.00 bitrate=4111.3kbits/s dup=2526 drop=0 speed=1.14x
[libx264 @ 000002374665af80] frame I:67    Avg QP:18.77  size: 18885
[libx264 @ 000002374665af80] frame P:1160  Avg QP:23.94  size:  8734
[libx264 @ 000002374665af80] frame B:3103  Avg QP:22.95  size:  1113
[libx264 @ 000002374665af80] consecutive B-frames:  1.9%  4.4%  9.8% 83.9%
[libx264 @ 000002374665af80] mb I  I16..4: 14.1% 80.9%  5.0%
[libx264 @ 000002374665af80] mb P  I16..4:  4.0% 13.5%  1.1%  P16..4: 10.2%  2.8%  0.7%  0.0%  0.0%    skip:67.7%
[libx264 @ 000002374665af80] mb B  I16..4:  0.1%  0.2%  0.0%  B16..8:  9.5%  0.4%  0.0%  direct: 0.1%  skip:89.6%  L0:46.4% L1:53.0% BI: 0.6%
[libx264 @ 000002374665af80] 8x8 transform intra:73.9% inter:73.4%
[libx264 @ 000002374665af80] coded y,uvDC,uvAC intra: 12.4% 19.1% 3.2% inter: 0.7% 0.7% 0.0%
[libx264 @ 000002374665af80] i16 v,h,dc,p: 49% 31% 11%  9%
[libx264 @ 000002374665af80] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 48% 15% 30%  1%  1%  1%  1%  1%  1%
[libx264 @ 000002374665af80] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 15% 20%  4%  5%  6%  4%  5%  2%
[libx264 @ 000002374665af80] i8c dc,h,v,p: 69% 13% 15%  2%
[libx264 @ 000002374665af80] Weighted P-Frames: Y:0.6% UV:0.2%
[libx264 @ 000002374665af80] ref P L0: 68.4%  6.5% 17.6%  7.4%  0.1%
[libx264 @ 000002374665af80] ref B L0: 84.6% 12.3%  3.0%
[libx264 @ 000002374665af80] ref B L1: 97.7%  2.3%
[libx264 @ 000002374665af80] kb/s:3950.77
[aac @ 0000023746669ac0] Qavg: 910.307

總結

通過本文的學習,我們了解了如何使用ffmpeg進行媒體流的重新編碼、設置碼率和設置幀速率等操作。雖然ffmpeg的命令行參數眾多,但是只要掌握了一些基本的命令和概念,就能夠靈活地處理各種媒體文件。希望本文能夠幫助你入門ffmpeg,為你的媒體處理工作提供幫助。在實際使用中,你可能還需要根據自己的需求去查閱更多的ffmpeg命令和參數,不斷提高自己的技能。祝你學習愉快!

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

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

相關文章

在線生成privacy-policy和 service-agreement

生成ppsa 網站 下面兩個是要收費的 局部功能可用 #1 Privacy Policy Generator - Privacy Policieshttps://termify.io/ 下面這個網站 創建一個是免費的 如果想要privacy-policy和 service-agreement 需要創建兩個賬戶 Termly

Java學習|JSON 處理庫:Gson、FastJson、Jackson的比較與使用指南

文章目錄 一、Gson簡介與使用注意事項1.1 簡介1.2 使用注意事項1.3 代碼示例序列化反序列化 二、FastJson簡介與使用注意事項2.1 簡介2.2 使用注意事項2.3 代碼示例序列化反序列化 三、Jackson簡介與使用注意事項3.1 簡介3.2 使用注意事項3.3 代碼示例序列化反序列化 四、關聯和…

svn不能記住密碼,反復彈出GNOME,自動重置svn.simple文件

1. 修改文件 打開 ~/.subversion/auth/svn.simple/xxx 更新前 K 15 svn:realmstring V 32 xxxxx //svn 地址,庫的地址 K 8 username V 4 xxx //用戶名 END在頂部插入下面內容, 注意,如果密碼不對,則文件文法正常生效 更新后…

37、PHP 實現一個鏈表中包含環,請找出該鏈表的環的入口結點

題目&#xff1a; 題目描述 PHP 實現一個鏈表中包含環&#xff0c;請找出該鏈表的環的入口結點。 描述&#xff1a; 一個鏈表中包含環&#xff0c;請找出該鏈表的環的入口結點。 <?php /*class ListNode{var $val;var $next NULL;function __construct($x){$this->v…

自動駕駛車道線檢測系列—3D-LaneNet: End-to-End 3D Multiple Lane Detection

文章目錄 1. 摘要概述2. 背景介紹3. 方法3.1 俯視圖投影3.2 網絡結構3.2.1 投影變換層3.2.2 投影變換層3.2.3 道路投影預測分支 3.3 車道預測頭3.4 訓練和真實值關聯 4. 實驗4.1 合成 3D 車道數據集4.2 真實世界 3D 車道數據集4.3 評估結果4.4 評估圖像僅車道檢測 5. 總結和討論…

windows下gcc編譯C、C++程序 MinGW編譯器

文章目錄 1、概要2、MinGW安裝2.1 編譯器下載2.2 編譯器安裝2.3 設置環境變量2.4 查看gcc版本信息 3、編譯C、C程序3.1 編寫Hello World.c3.2 編譯C程序3.3 運行程序3.4 編譯C程序 1、概要 GCC原名為GNU C語言編譯器&#xff08;GNU C Compiler&#xff09;&#xff0c;只能處…

SpringBoot 實現整合kafka的簡單使用

1、引入kafka的依賴 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId></dependency>2、配置kafka spring:kafka:bootstrap-servers: 156.65.20.76:9092,156.65.20.…

Linux系統下weblogic10.3.6版本打補丁步驟

linux系統 weblogic補丁壓縮包&#xff1a;p35586779_1036_Generic.zip 鏈接&#xff1a;https://pan.baidu.com/s/1EEz_zPX-VHp5EU5LLxfxjQ 提取碼&#xff1a;XXXX &#xff08;補丁壓縮包中包含以下東西&#xff09; 打補丁步驟&#xff1a; 1.備份原weblogic(需要先確保服…

Langchain[3]:Langchain架構演進與功能擴展:流式事件處理、事件過濾機制、回調傳播策略及裝飾器應用

Langchain[3]:Langchain架構演進與功能擴展&#xff1a;流式事件處理、事件過濾機制、回調傳播策略及裝飾器應用 1. Langchain的演變 v0.1: 初始版本&#xff0c;包含基本功能。 從0.1~0.2完成的特性&#xff1a; 通過事件流 API 提供更好的流式支持。標準化工具調用支持Tool…

【linux 100條命令】

以下介紹一些常見的 Linux 命令&#xff1a; 1. ls &#xff1a;用于列出目錄中的內容。 - 常用選項&#xff1a; - -l &#xff1a;以長格式顯示詳細信息&#xff0c;包括文件權限、所有者、所屬組、文件大小、修改時間等。 - -a &#xff1a;顯示所有文件&#xff0c;包…

哪些基于 LLMs 的產品值得開發?從用戶體驗和市場接受度的角度探討

編者按&#xff1a;在大語言模型&#xff08;LLMs&#xff09;相關技術高速發展的今天&#xff0c;哪些基于 LLMs 的產品真正值得我們投入精力開發&#xff1f;如何從用戶體驗和市場接受度的角度評估這些產品的潛力&#xff1f; 今天為大家分享的這篇文章&#xff0c;作者的核心…

從代理模式到注解開發

代理模式 package org.example.proxy;public class ProxyClient {public static void main(String[] args) {ProxyBuilder proxyBuilder new ProxyBuilder();proxyBuilder.build();} }interface BuildDream {void build(); }class CustomBuilder implements BuildDream {Over…

visual studio開發C++項目遇到的坑

文章目錄 1.安裝的時候&#xff0c;順手安裝了C模板&#xff0c;導致新建項目執行出問題2.生成的exe&#xff0c;打開閃退問題3.項目里宏的路徑不對&#xff0c;導致后面編譯沒有輸出4. vs編譯ui&#xff0c;warning跳過&#xff0c;未成功5.vs編譯.h&#xff0c;warning跳過&a…

K8S 中的 CRI、OCI、CRI shim、containerd

K8S 如何創建容器&#xff1f; 下面這張圖&#xff0c;就是經典的 K8S 創建容器的步驟&#xff0c;可以說是冗長復雜&#xff0c;至于為什么設計成這樣的架構&#xff0c;繼續往下讀。 前半部分 CRI&#xff08;Container Runtime Interface&#xff0c;容器運行時接口&#xf…

避免海外業務中斷,TikTok養號注意事項

TikTok已成為企業和個人拓展海外業務的重要平臺。然而&#xff0c;由于平臺規則嚴格&#xff0c;賬號被封禁或限制訪問的風險始終存在。為了確保用戶在TikTok上的業務順利進行&#xff0c;著重說一些養號的注意事項。 文章分為三個部分&#xff0c;分別是遵守平臺規則、養號策略…

Qt判定鼠標是否在該多邊形的線條上

要判斷鼠標是否在由QPainterPath或一系列QPointF點定義的多邊形的線條上&#xff0c;你可以使用以下步驟&#xff1a; 獲取鼠標當前位置&#xff1a;在鼠標事件中&#xff0c;使用QMouseEvent的pos()方法獲取鼠標的當前位置。 檢查點與線段的距離&#xff1a;遍歷多邊形的每條…

面試高級 Java 工程師:2024 年的見聞與思考

面試高級 Java 工程師&#xff1a;2024 年的見聞與思考 由于公司業務拓展需要&#xff0c;公司招聘一名高級java工程研發工程師&#xff0c;主要負責新項目的研發及老項目的維護升級。我作為一名技術面試官&#xff0c;參與招聘高級 Java 工程師&#xff0c;我見證了技術領域的…

LATEX格式的高等數學題庫(導數和概率論與數理統計)

\documentclass{ctexart} \usepackage{amsmath,amssymb,amsfonts,hyperref} \usepackage{CJKutf8} \usepackage{enumitem} % 引入宏包 \usepackage [colorlinkstrue] {} \begin{document}\begin{CJK}{UTF8}{gkai}%正文放在此行下與\end{CJK}之間就行\tableofcontents\newpage\s…

F1-score(標準度量)

什么是F1-score&#xff1f; F1分數&#xff08;F1-score&#xff09;是分類問題的一個衡量指標。一些多分類問題的機器學習競賽&#xff0c;常常將F1-score作為最終測評的方法。它是精確率和召回率的調和平均數&#xff0c;最大為1&#xff0c;最小為0&#xff0c;如公式1所示…

高效轉換:CSV 轉 JSON 數組 API

在日常數據處理和分析中&#xff0c;CSV 和 JSON 是兩種常見的數據格式。無論是開發者還是數據科學家&#xff0c;經常需要在這兩種格式之間轉換。我們提供的 CSV 轉 JSON 數組 API 可以幫助您輕松完成這一任務。 功能特點&#xff1a; 多種輸入方式&#xff1a;支持直接粘貼…