1. FFmpeg 支持能力說(shuō)明
1.1 FFmpeg 介紹及安裝
1.1.1FFmpeg簡(jiǎn)介
FFmpeg 是一個(gè)開(kāi)源免費(fèi)跨平臺(tái)的視頻和音頻流方案,屬于自由軟件,采用 LGPL 或
GPL 許可證(依據(jù)你選擇的組件)。它提供了錄制、轉(zhuǎn)換以及流化音視頻的完整解決方 案。它包含了非常先進(jìn)的音頻/視頻編解碼庫(kù) libavcodec,為了保證高可移植性和編解 碼質(zhì)量,libavcodec 里很多 codec 都是從頭開(kāi)發(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ù)開(kāi)發(fā)的一個(gè)簡(jiǎn)單的媒體播放器
4、libavcodec 一個(gè)包含了所有 FFmpeg 音視頻編解碼器的庫(kù).為了保證最優(yōu)性能和高可復(fù)用性,大多數(shù)編解碼器從頭開(kāi)發(fā)的.
5、libavformat 一個(gè)包含了所有的普通音視格式的解析器和產(chǎn)生器的庫(kù)
1.1.1 FFmpeg安裝
1.將所有源代碼壓縮在一個(gè)文件夾中,例如/絕對(duì)路徑/ffmpeg。 2.在終端輸入以下指令:
Cd /絕對(duì)路徑/ffmpeg
./configure (此時(shí),會(huì)出現(xiàn)問(wèn)題。然后重新輸入./configure –disable-yasm-) Make
至此,ffmpeg 安裝編譯通過(guò),可以進(jìn)行對(duì)音視頻的操作。
ffplay 的編譯需要依賴于 SDL 庫(kù),所以要想編譯成功 ffplay,必須先安裝 SDL 庫(kù), 安裝方法:下載最新版本的 SDL 相應(yīng)版本的 SDL 源碼,編譯,即可生成 SDL 庫(kù)。
1.2 FFmpeg 參數(shù)說(shuō)明
1.2.1 通用選項(xiàng)
-h 幫助
-fromats 顯示可用的格式,編解碼的,協(xié)議的。
-f fmt 強(qiáng)迫采用格式 fmt
-i filename 輸入文件
-y 覆蓋輸出文件
-t duration 設(shè)置紀(jì)錄時(shí)間 hh:mm:ss[.xxx]格式的記錄時(shí)間也支持 -ss position 搜索到指定的時(shí)間 [-]hh:mm:ss[.xxx]的格式也支持 -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è)置 ,只需要輸入如下的就可以了:
-hq 激活高質(zhì)量設(shè)置
-itsoffset offset 設(shè)置以秒為基準(zhǔn)的時(shí)間偏移,該選項(xiàng)影響所有后面的輸入文件。該
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
偏移被加到輸入文件的時(shí)戳,定義一個(gè)正偏移意味著相應(yīng)的流被延遲了 offset 秒。[-]hh:mm:ss[.xxx]的格式也支持。
1.2.2 視頻選項(xiàng)
-b bitrate 設(shè)置比特率,缺省 200kb/s
-r fps 設(shè)置幀頻 缺省 25
-s size 設(shè)置幀大小 格式為 WXH 缺省 160X128.下面的簡(jiǎn)寫也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-aspect aspect 設(shè)置橫縱比 4:3 16:9 或 1.3333 1.7777
-croptop size 設(shè)置頂部切除帶大小 像素單位
-cropbottom 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ù),紅:綠:蘭排列,比如 000000 代表黑色)
-vn 不做視頻記錄
-bt tolerance 設(shè)置視頻碼率容忍度 kbit/s
-maxrate bitrate 設(shè)置最大視頻碼率容忍度
-minrate bitreate 設(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 選擇兩遍的紀(jì)錄文件名為 file。
1.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
FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD -4mv 使用 4 個(gè)運(yùn)動(dòng)矢量 僅用于 mpeg4
-part 使用數(shù)據(jù)劃分 僅用于 mpeg4
-bug param 繞過(guò)沒(méi)有被自動(dòng)監(jiān)測(cè)到編碼器的問(wèn)題 -strict strictness 跟標(biāo)準(zhǔn)的嚴(yán)格性
-aic 使能高級(jí)幀內(nèi)編碼 h263+ -umv 使能無(wú)限運(yùn)動(dòng)矢量 h263+ -deinterlace 不采用交織方法
使 用
mb_cmp 1
-interlace 強(qiáng)迫交織法編碼 僅對(duì) mpeg2 和 mpeg4 有效。當(dāng)你的輸入是交織的并且你 想要保持交織以最小圖像損失的時(shí)候采用該選項(xiàng)??蛇x的方法是不交織,但是損失 更大
-psnr 計(jì)算壓縮幀的 psnr
-vstats 輸出視頻編碼統(tǒng)計(jì)到 vstats_hhmmss.log
-vhook module 插入視頻處理模塊 module 包括了模塊名和參數(shù),用空格分開(kāi)
1.2.4 音頻選項(xiàng)
-ab bitrate 設(shè)置音頻碼率
-ar freq 設(shè)置音頻采樣率
-ac channels 設(shè)置通道 缺省為 1 -an 不使能音頻紀(jì)錄
-acodec codec 使用 codec 編解碼
1.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
1.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è)試
1.2.7 FFmpeg參數(shù)實(shí)列
./ffmpeg -y -i /rootVideoConverter/123.avi -ab 56 -ar 22050 -b 1500 -r 15 -qscale 10
–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 以 上沒(méi)效果;還可以用動(dòng)態(tài)碼率如:-qscale 4 和-qscale 6,4 的質(zhì)量比 6 高)
-acodec aac(音頻編碼用 AAC)
-ac
-ar
-ab
-vol 200(200%的音量,自己改)
-f psp (輸出 psp 專用格式)
-muxvb 768(給 PSP 機(jī)器識(shí)別的碼率,一般選擇 384、512 和 768) -ab bitrate 設(shè)置音頻碼率
-ar freq 設(shè)置音頻采樣率
-ss 指定時(shí)間點(diǎn)開(kāi)始轉(zhuǎn)換任務(wù),(time_off set the start time offset),-ss 后跟的時(shí)間單 位為秒 .
-s 320x240 指定分辨率
-r 29.97 楨速率
-bitexact 使用標(biāo)準(zhǔn)比特率
2 (聲道數(shù)1或2)
24000(聲音的采樣頻率,好像 PSP 只能支持 24000Hz)
128 ( 音頻數(shù)據(jù)流量,一般選擇 32、64、96、128)
-vcodec xvid 使用 xvid 壓縮
1.3 FFmpeg 支持能力說(shuō)明
1.3.1 FFmpeg 對(duì)編碼解碼器的支持
ffmpeg 支持的編解碼器種類共有 280 多種,涵蓋了幾乎所有常見(jiàn)音視頻編碼格式,
能解碼幾乎所有的音視頻,每種音視頻編解碼器的實(shí)現(xiàn)都在 libavcodec 目錄下有具體的 C 語(yǔ)言實(shí)現(xiàn)。
1.3.2 FFmpeg 對(duì)容器格式的支持
ffmpeg 支持對(duì)絕大多數(shù)的容器格式的讀寫操作,共計(jì) 190 多種,涵蓋了互聯(lián)網(wǎng)上各 種常見(jiàn)媒體格式及日常生活中及專業(yè)應(yīng)用中的各種媒體格式。