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

寫在前面

如果對(duì)FFmpeg有需要更多了解的請(qǐng)訂閱我的專題:音視頻專輯

文檔介紹

1.1 文檔目的

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

1.2 文檔范圍

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

1.3 讀者對(duì)象

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

1.4 參考文獻(xiàn)

無(wú)

1.5 術(shù)語(yǔ)與縮寫解釋

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

FFmpeg 支持能力說(shuō)明

FFmpeg 介紹及安裝

2.1.1 FFmpeg 簡(jiǎn)介

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

ffmpeg 項(xiàng)目由以下幾部分組成:

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

2.1.2 FFmpeg 安裝

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

  • 在終端輸入以下指令:

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

至此, ffmpeg 安裝編譯通過(guò), 可以進(jìn)行對(duì)音視頻的操作。

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

2.2 FFmpeg 參數(shù)說(shuō)明

2.2.1 通用選項(xiàng)

  • -L license
    *-h 幫助

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

  • f fmt 強(qiáng)迫采用格式fmt

  • -i filename輸入文件

  • -y覆蓋輸出文件

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

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

  • -title string 設(shè)置標(biāo)題

  • -author string 設(shè)置作者

  • -copyright string 設(shè)置版權(quán)

  • -comment string 設(shè)置評(píng)論

  • -target type 設(shè)置目標(biāo)文件類型(vcd,svcd,dvd)所有的格式選項(xiàng)(比特率,編解碼率,緩沖區(qū)大?。┳詣?dòng)設(shè)置,只需要輸入如下的就可以了:

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

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

2.2.2 視頻選項(xiàng)

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

2.2.3 高級(jí)視頻選項(xiàng)

  • -g gop_size 設(shè)置圖像組大小
  • -intra 僅適用幀內(nèi)編碼
  • -qscale q 使用固定的視頻量化標(biāo)度(VBR)
  • -qmin q 最小視頻量化標(biāo)度(VBR)
  • -qmax q 最大視頻量化標(biāo)度(VBR)
  • -qdiff q 量化標(biāo)度間最大偏差 (VBR)
  • -qblur blur 視頻量化標(biāo)度柔化(VBR)
  • -qcomp compression 視頻量化標(biāo)度壓縮(VBR)
  • -rc_init_cplx complexity 一遍編碼的初始復(fù)雜度
  • -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 設(shè)置碼率控制方程 默認(rèn) tex^qComp
  • -rc_override override 特定間隔下的速率控制重載
  • -me method 設(shè)置運(yùn)動(dòng)估計(jì)的方法 可用方法有 zero phods log x1 epzs(缺省) full
  • -dct_algo algo 設(shè) 置 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 設(shè) 置 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 設(shè)置錯(cuò)誤殘留為 n
1 FF_ER_CAREFULL 缺省
2 FF_ER_COMPLIANT
3 FF_ER_AGGRESSIVE
4 FF_ER_VERY_AGGRESSIVE
  • -ec bit_mask 設(shè) 置 錯(cuò) 誤 掩 蔽 為 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 個(gè)運(yùn)動(dòng)矢量 僅用于 mpeg4
  • -part 使用數(shù)據(jù)劃分 僅用于 mpeg4
  • -bug param 繞過(guò)沒有被自動(dòng)監(jiān)測(cè)到編碼器的問題
  • -strict strictness 跟標(biāo)準(zhǔn)的嚴(yán)格性
  • -aic 使能高級(jí)幀內(nèi)編碼 h263+
  • -umv 使能無(wú)限運(yùn)動(dòng)矢量 h263+
  • -deinterlace 不采用交織方法
  • -interlace 強(qiáng)迫交織法編碼 僅對(duì) mpeg2 和 mpeg4 有效。當(dāng)你的輸入是交織的并且你 想要保持交織以最小圖像損失的時(shí)候采用該選項(xiàng)。 可選的方法是不交織, 但是損失 更大
  • -psnr 計(jì)算壓縮幀的 psnr
  • -vstats 輸出視頻編碼統(tǒng)計(jì)到 vstats_hhmmss.log
  • -vhook module 插入視頻處理模塊 module 包括了模塊名和參數(shù), 用空格分開

2.2.4音頻選項(xiàng)

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

2.2.5 音頻/視頻捕獲選項(xiàng)

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

2.2.6 高級(jí)選項(xiàng)

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

2.2.7 FFmpeg 參數(shù)實(shí)例

以下面這個(gè)命令作為例子

./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 的不然會(huì)變形)
  • -r (幀數(shù), 一般就用這個(gè)吧)
  • -b 1500(視頻數(shù)據(jù)流量,用-b xxxx 的指令則使用固定碼率,數(shù)字隨便改,1500 以 上沒效果;還可以用動(dòng)態(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 機(jī)器識(shí)別的碼率, 一般選擇 384、512 和
  • -ab bitrate 設(shè)置音頻碼率
  • -ar freq 設(shè)置音頻采樣率
  • -ss 指定時(shí)間點(diǎn)開始轉(zhuǎn)換任務(wù), (time_off set the start time offset), -ss 后跟的時(shí)間單位為秒 .
  • -s 320x240 指定分辨率
  • -r 29.97 楨速率
  • -bitexact 使用標(biāo)準(zhǔn)比特率
  • -vcodec xvid 使用 xvid 壓縮

寫在后面

如果對(duì)FFmpeg有需要更多了解的請(qǐng)訂閱我的專題:音視頻專輯

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

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

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

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