FFMPEG完美入門資料---001---介紹和參數(shù)說明

寫在前面

如果對FFmpeg有需要更多了解的請訂閱我的專題:音視頻專輯

文檔介紹

1.1 文檔目的

整理出開源代碼 ffmpeg 的資料, 方便公司同事后續(xù)使用。

1.2 文檔范圍

較為詳細的介紹 ffmpeg 的功能、使用以及二次開發(fā)。

1.3 讀者對象

希望了解 ffmpeg 知識, 從事 USM 及 IPTV 的同事。

1.4 參考文獻

1.5 術語與縮寫解釋

縮略語/術語 全稱 介紹說明
ffmpeg Fast forword mpeg 音視頻轉(zhuǎn)換器
ffplay Fast forword play 用 ffmpeg 實現(xiàn)的播放器
ffserver Fast forword server 用 ffmpeg 實現(xiàn)的 rstp 服務器
ffprobe Fast forword probe 用來輸入分析輸入流

FFmpeg 支持能力說明

FFmpeg 介紹及安裝

2.1.1 FFmpeg 簡介

FFmpeg 是一個開源免費跨平臺的視頻和音頻流方案, 屬于自由軟件, 采用 LGPL 或GPL 許可證(依據(jù)你選擇的組件)。 它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方案。 它包含了非常先進的音頻/視頻編解碼庫 libavcodec, 為了保證高可移植性和編解碼質(zhì)量, libavcodec 里很多 codec 都是從頭開發(fā)的。

ffmpeg 項目由以下幾部分組成:

  • 1.ffmpeg 視頻文件轉(zhuǎn)換命令行工具,也支持經(jīng)過實時電視卡抓取和編碼成視頻文件.
  • 2.ffserver 基于 HTTP、RTSP 用于實時廣播的多媒體服務器.也支持時間平移
  • 3.ffplay 用 SDL 和 FFmpeg 庫開發(fā)的一個簡單的媒體播放器
  • 4.libavcodec 一個包含了所有 FFmpeg 音視頻編解碼器的庫.為了保證最優(yōu)性能和高可復用性,大多數(shù)編解碼器從頭開發(fā)的.
  • 5.libavformat 一個包含了所有的普通音視格式的解析器和產(chǎn)生器的庫

2.1.2 FFmpeg 安裝

  • 1.將所有源代碼壓縮在一個文件夾中, 例如/絕對路徑/ffmpeg。

  • 在終端輸入以下指令:

    cd /絕對路徑/ffmpeg ./configure (此時, 會出現(xiàn)問題。 然后重新輸入./configure –disable-yasm-) Make
    

至此, ffmpeg 安裝編譯通過, 可以進行對音視頻的操作。

ffplay 的編譯需要依賴于 SDL 庫, 所以要想編譯成功 ffplay, 必須先安裝 SDL 庫, 安裝方法:下載最新版本的 SDL 相應版本的 SDL 源碼, 編譯, 即可生成 SDL 庫。

2.2 FFmpeg 參數(shù)說明

2.2.1 通用選項

  • -L license
    *-h 幫助

  • formats 顯示可用的格式,編解碼的,協(xié)議的

  • f fmt 強迫采用格式fmt

  • -i filename輸入文件

  • -y覆蓋輸出文件

  • -t duration設置記錄時間 hh:mm:ss[.xxx]格式的記錄時間也支持

  • -ss position 搜索到指定的時間[-] hh:mm:ss[.xxx]的時間格式也支持

  • -title string 設置標題

  • -author string 設置作者

  • -copyright string 設置版權

  • -comment string 設置評論

  • -target type 設置目標文件類型(vcd,svcd,dvd)所有的格式選項(比特率,編解碼率,緩沖區(qū)大小)自動設置,只需要輸入如下的就可以了:

    ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
    
  • -hq 激活高質(zhì)量設置

  • -itsoffset offset 設置以秒為基準的時間偏差,該選項影響后面所有的輸入文件。改偏移被加入到輸入文件的時間戳,定義一個正偏移意味著相應的流被延遲了offset秒。[-]hh:mm:ss[.xxx]的格式也支持

2.2.2 視頻選項

  • -b bitrate設置比特率,缺省200kb/s
  • -r fps 設置幀頻率,缺省25
  • -s size設置幀的大小,此格式為WXH 缺省 160 x 128 下面的簡寫可以直接使用
sqcif 128 x 96
qcif 176 x 144
cif 352 x 288
4cif 704 x 576
  • -aspect apect 設置縱橫比 4:3 ,16:9,或者1.3333,1.7777
  • -croptop size 設置頂部切除帶大小 像素單位
  • -cropbuttom size -cropleft size -cropright size 底部,左邊,右邊切除帶大小
  • -padtop size 設置頂部補齊的大小 像素單位
  • -padbottom size -padleft size -padright size -padcolor color設置補齊條大小和顏色(hex,6個16進制的數(shù),紅綠藍排列,比如000000代表黑色)
  • -vn 不做視頻記錄
  • -bt tolerance設置視頻碼率容忍度 kbit/s
  • -maxrate bitrate 設置最大視頻碼率容忍度
  • -minrate bitrate 設置最小視頻碼率容忍度
  • -bufsize size 設置碼率控制緩沖區(qū)大小
  • -vcodec codec 強制使用codec編解碼方式,如果用copy表示原始編碼數(shù)據(jù)必須被拷貝
  • -sameq 使用同樣視頻質(zhì)量作為源(VBR)
  • -pass n 選擇處理遍數(shù)(1或2)兩遍編碼非常有用,第一遍生成統(tǒng)計信息,第二遍生成精確的請求的碼率
  • -passlogfile file選擇兩遍的記錄文件名為file

2.2.3 高級視頻選項

  • -g gop_size 設置圖像組大小
  • -intra 僅適用幀內(nèi)編碼
  • -qscale q 使用固定的視頻量化標度(VBR)
  • -qmin q 最小視頻量化標度(VBR)
  • -qmax q 最大視頻量化標度(VBR)
  • -qdiff q 量化標度間最大偏差 (VBR)
  • -qblur blur 視頻量化標度柔化(VBR)
  • -qcomp compression 視頻量化標度壓縮(VBR)
  • -rc_init_cplx complexity 一遍編碼的初始復雜度
  • -b_qfactor factor 在 p 和 b 幀間的 qp 因子
  • -i_qfactor factor 在 p 和 i 幀間的 qp 因子
  • -b_qoffset offset 在 p 和 b 幀間的 qp 偏差
  • -i_qoffset offset 在 p 和 i 幀間的 qp 偏差
  • -rc_eq equation 設置碼率控制方程 默認 tex^qComp
  • -rc_override override 特定間隔下的速率控制重載
  • -me method 設置運動估計的方法 可用方法有 zero phods log x1 epzs(缺省) full
  • -dct_algo algo 設 置 dct 的 算 法 可 用 的 有
0 FF_DCT_AUTO 缺 省 的 DCT
1 FF_DCT_FASTINT
2 FF_DCT_INT
3 FF_DCT_MMX
4 FF_DCT_MLIB
5 FF_DCT_ALTIVEC
  • -idct_algo algo 設 置 idct 算 法 。 可 用 的 有
0 FF_IDCT_AUTO 缺 省 的 IDCT
1 FF_IDCT_INT
2 FF_IDCT_SIMPLE
3 FF_IDCT_SIMPLEMMX
4 FF_IDCT_LIBMPEG2MMX
5 FF_IDCT_PS2
6 FF_IDCT_MLIB
7 FF_IDCT_ARM
8 FF_IDCT_ALTIVEC
9 FF_IDCT_SH4
10 FF_IDCT_SIMPLEARM
  • -er n 設置錯誤殘留為 n
1 FF_ER_CAREFULL 缺省
2 FF_ER_COMPLIANT
3 FF_ER_AGGRESSIVE
4 FF_ER_VERY_AGGRESSIVE
  • -ec bit_mask 設 置 錯 誤 掩 蔽 為 bit_mask , 該 值 為 如 下 值 的 位 掩 碼
1 FF_EC_GUESS_MVS (default=enabled)
2 FF_EC_DEBLOCK (default=enabled)
  • -bf frames 使用 frames B 幀, 支持 mpeg1, mpeg2, mpeg4
  • -mbd mode 宏 塊 決 策
0 FF_MB_DECISION_SIMPLE 使 用 mb_cmp
1 FF_MB_DECISION_BITS
2 FF_MB_DECISION_RD
  • -4mv 使用 4 個運動矢量 僅用于 mpeg4
  • -part 使用數(shù)據(jù)劃分 僅用于 mpeg4
  • -bug param 繞過沒有被自動監(jiān)測到編碼器的問題
  • -strict strictness 跟標準的嚴格性
  • -aic 使能高級幀內(nèi)編碼 h263+
  • -umv 使能無限運動矢量 h263+
  • -deinterlace 不采用交織方法
  • -interlace 強迫交織法編碼 僅對 mpeg2 和 mpeg4 有效。當你的輸入是交織的并且你 想要保持交織以最小圖像損失的時候采用該選項。 可選的方法是不交織, 但是損失 更大
  • -psnr 計算壓縮幀的 psnr
  • -vstats 輸出視頻編碼統(tǒng)計到 vstats_hhmmss.log
  • -vhook module 插入視頻處理模塊 module 包括了模塊名和參數(shù), 用空格分開

2.2.4音頻選項

  • -ab bitrate 設置音頻碼率
  • -ar freq 設置音頻采樣率
  • -ac channels 設置通道 缺省為 1
  • -an 不使能音頻紀錄
  • -acodec codec 使用 codec 編解碼

2.2.5 音頻/視頻捕獲選項

  • -vd device 設置視頻捕獲設備。 比如/dev/video0
  • -vc channel 設置視頻捕獲通道 DV1394 專用
  • -tvstd standard 設置電視標準 NTSC PAL(SECAM)
  • -dv1394 設置 DV1394 捕獲
  • -av device 設置音頻設備 比如/dev/dsp

2.2.6 高級選項

  • -map file:stream 設置輸入流映射
  • -debug 打印特定調(diào)試信息
  • -benchmark 為基準測試加入時間
  • -hex 傾倒每一個輸入包
  • -bitexact 僅使用位精確算法 用于編解碼測試
  • -ps size 設置包大小, 以 bits 為單位
  • -re 以本地幀頻讀數(shù)據(jù), 主要用于模擬捕獲設備
  • -loop 循環(huán)輸入流。 只工作于圖像流, 用于 ffserver 測試

2.2.7 FFmpeg 參數(shù)實例

以下面這個命令作為例子

./ffmpeg -y -i /rootVideoConverter/123.avi –s 480x350 /root/VideoConverter/234.flv
  • -y (覆蓋輸出文件, 即如果 1.***文件已經(jīng)存在的話, 不經(jīng)提示就覆蓋掉了)
  • -i "1.avi"(輸入文件是和 ffmpeg 在同一目錄下的 1.avi 文件,可以自己加路徑,改名字)
  • -s (輸出的分辨率, 注意片源一定要是 16:9 的不然會變形)
  • -r (幀數(shù), 一般就用這個吧)
  • -b 1500(視頻數(shù)據(jù)流量,用-b xxxx 的指令則使用固定碼率,數(shù)字隨便改,1500 以 上沒效果;還可以用動態(tài)碼率如:-qscale 4 和-qscale 6, 4 的質(zhì)量比 6 高)
  • -acodec aac(音頻編碼用 AAC)
  • -ac 2 (聲道數(shù) 1 或 2)
  • -ar 24000(聲音的采樣頻率, 好像 PSP 只能支持 24000Hz)
  • -ab 128 ( 音頻數(shù)據(jù)流量, 一般選擇 32、64、96、128)
  • -vol 200(200%的音量, 自己改)
  • -f psp (輸出 psp 專用格式)
  • -muxvb 768(給 PSP 機器識別的碼率, 一般選擇 384、512 和
  • -ab bitrate 設置音頻碼率
  • -ar freq 設置音頻采樣率
  • -ss 指定時間點開始轉(zhuǎn)換任務, (time_off set the start time offset), -ss 后跟的時間單位為秒 .
  • -s 320x240 指定分辨率
  • -r 29.97 楨速率
  • -bitexact 使用標準比特率
  • -vcodec xvid 使用 xvid 壓縮

寫在后面

如果對FFmpeg有需要更多了解的請訂閱我的專題:音視頻專輯

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,980評論 0 3
  • 根據(jù)ffmpeg官方網(wǎng)站上的例子程序開始學習ffmpeg和SDL編程。 SDL是一個跨平臺的多媒體開發(fā)包。適用于游...
    762683ff5d3d閱讀 1,916評論 0 2
  • 1.簡介 ffmpeg [global_options] {[input_file_options] -i inp...
    你家旭哥閱讀 6,722評論 1 4
  • 我喜歡安靜的時刻,我覺得安靜能讓我反思自己,反思自己的所做所為,在夜晚我仿佛在與另一個時空的自己對話 安靜會讓我想...
    一直很安靜l閱讀 220評論 0 1
  • TPP仿佛一夜之間火了,我關注的訂閱號里,有個理財達人講了一遍TPP不可怕的文章??捎掴g如我真心看不懂是神馬意思。...
    Dreamer007閱讀 864評論 0 1

友情鏈接更多精彩內(nèi)容