九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ffmpeg與x264編碼指南

    x264是一個(gè) H.264/MPEG4 AVC 編碼器,本指南將指導(dǎo)新手如何創(chuàng)建高質(zhì)量的H.264視頻。

    對于普通用戶通常有兩種碼率控制模式:crf(Constant Rate Factor)和Two pass ABR。碼率控制是一種決定為每一個(gè)視頻幀分配多少比特?cái)?shù)的方法,它將決定文件的大小和質(zhì)量的分配。

    如果你在編譯和安裝libx264 方面需要幫助,請查看ffmpeg和x264編譯指南:

    http://ffmpeg.org/trac/ffmpeg/wiki/CompilationGuide

crf(Constant Rate Factor):

    該方法在輸出文件的大小不太重要的時(shí)候,可以使整個(gè)文件達(dá)到特定的視頻質(zhì)量。該編碼模式在單遍編碼模式下提供了最大的壓縮效率,每一幀可以按照要求的視頻質(zhì)量去獲取它需要的比特?cái)?shù)。不好的一面是,你不能獲取一個(gè)特定大小的視頻文件,或者說將輸出位率控制在特定的大小上。

    1 選擇一個(gè)CRF值

    量化比例的范圍為0~51,其中0為無損模式,23為缺省值,51可能是最差的。該數(shù)字越小,圖像質(zhì)量越好。從主觀上講,18~28是一個(gè)合理的范圍。18往往被認(rèn)為從視覺上看是無損的,它的輸出視頻質(zhì)量和輸入視頻一模一樣或者說相差無幾。但從技術(shù)的角度來講,它依然是有損壓縮。  

    若Crf值加6,輸出碼率大概減少一半;若Crf值減6,輸出碼率翻倍。通常是在保證可接受視頻質(zhì)量的前提下選擇一個(gè)最大的Crf值,如果輸出視頻質(zhì)量很好,那就嘗試一個(gè)更大的值,如果看起來很糟,那就嘗試一個(gè)小一點(diǎn)值。

    注釋:本文所提到的量化比例只適用于8-bitx264(10-bit x264的量化比例 為0~63),你可以使用x264 --help命令在Output bit depth選項(xiàng)查看輸出位深,在各種版本中,8bit是最常見的。

   2 選擇一個(gè)預(yù)設(shè)

     預(yù)設(shè)是一系列參數(shù)的集合,這個(gè)集合能夠在編碼速度和壓縮率之間做出一個(gè)權(quán)衡。一個(gè)編碼速度稍慢的預(yù)設(shè)會提供更高的壓縮效率(壓縮效率是以文件大小來衡量的)。這就是說,假如你想得到一個(gè)指定大小的文件或者采用恒定比特率編碼模式,你可以采用一個(gè)較慢的預(yù)設(shè)來獲得更好的質(zhì)量。同樣的,對于恒定質(zhì)量編碼模式,你可以通過選擇一個(gè)較慢的預(yù)設(shè)輕松地節(jié)省比特率。

     如果你很有耐心,通常的建議是使用最慢的預(yù)設(shè)。目前所有的預(yù)設(shè)按照編碼速度降序排列為:                      ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo

 缺省預(yù)設(shè)為medium,請忽略 placebo因?yàn)樗呛翢o用處的(參看下面的問答)。你可以使用--preset來查看預(yù)設(shè)列表,也可以通過x264 --fullhelp來查看預(yù)設(shè)所采用的參數(shù)配置。

    你可以基于輸入內(nèi)容的獨(dú)特性通過使用--tune來改變參數(shù)設(shè)置。當(dāng)前的 tune包括:film,animation,grain,stillimage,psnr,ssim,fastdecode,zerolantency。假如你的壓制內(nèi)容是動畫,你可以使用animation,或者你想保留紋理,那就是用grain。如果你不確定使用哪個(gè)選項(xiàng)或者說你的輸入與所有的tune皆不匹配,你可以忽略--tune 選項(xiàng)。你可以使用--tune來查看tune列表,也可以通過x264 --fullhelp來查看tune所采用的參數(shù)配置。

    另外一個(gè)可選的參數(shù)是--profile,它可以將你的輸出限制到一個(gè)特定的 H.264  profile,該選項(xiàng)可以被忽略除非你的播放設(shè)備只支持某種profile。當(dāng)?shù)乃衟rofile 包括:baseline,main.high,high10,high422,high444 。注意使用--profile選項(xiàng)和無損編碼是不兼容的。

    如下所示,作為一種快捷方式,你可以通過不聲明 preset和tune得內(nèi)容來為ffmpeg羅列所有可能的內(nèi)部preset和tune。

   ffmpeg -i input -c:v libx264 -preset -tune dummy.mp4

  3 使用你的預(yù)設(shè)

   一旦你選擇了一個(gè)預(yù)設(shè),請把它應(yīng)用到你的剩余的尚未編碼的視頻,這樣可以確保它們有同樣的視頻質(zhì)量。   

CRF例子:

接下來將使用x264編碼一個(gè)視頻,使用一個(gè)比普通預(yù)設(shè)稍慢的預(yù)設(shè),這樣可以得到比默認(rèn)設(shè)置稍好一點(diǎn)的視頻質(zhì)量。

ffmpeg -i input -c:v libx264 -preset slow -crf 22-c:a copy output.mkv

注意在這個(gè)例子中,輸入文件的音頻流被簡單地拷貝到輸出,并沒有重編碼。

兩遍模式:

如果你的目標(biāo)是一個(gè)確定大小的文件而且?guī)c幀之間的視頻質(zhì)量并不重要,這個(gè)方法很適用。這通過一個(gè)例子可以得到很好地解釋。你的視頻有10分鐘(600秒)的時(shí)長同時(shí)要求輸出為50MB,因?yàn)楸忍芈?文件大小/時(shí)長,

   50MB*8192(MB轉(zhuǎn)kilobits)/600秒=683 kbps(全局比特率)

   ,683kbps-128kbps(音頻比特率)=555kbps(視頻比特率),

兩邊編碼的例子:

  ffmpeg -y -i input -c:v libx264 -preset medium -b:v 555k -pass 1 -an -f mp4 /dev/null &&

  ffmpeg -i input -c:v libx264 -preset medium -b:v 555k -pass 2 -c:a libfdkaac -b:a 128k mp4 output.mp4

注意 windows 用戶應(yīng)該使用NUL來取代/dev/null

當(dāng)使用CRF時(shí),請選擇使用你所能容忍的最慢預(yù)設(shè)。

  同時(shí)建議你看一下《制作高質(zhì)量的 MPEG4 DVD電影視頻剪輯》,這是一篇 MPEG4 編碼器編碼指南,它會讓你深刻的了解當(dāng)你面臨存儲空間受限時(shí),兩邊編碼模式對于有效的使用每一個(gè)bit是多么的重要。

 無損H.264

你可以使用-qp 0或者-crf 0 來編碼一個(gè)無損輸出,對于無損壓縮我們提倡使用-qp 勝過-crf。因?yàn)? bitx264和10 bitx264中的 crf 針對無損模式使用了不同的值。對此ultrafast和veryslow是兩個(gè)非常有用的預(yù)設(shè),因?yàn)轱w快的編碼速度和出色的壓縮比通常是兩個(gè)非常重要的因素。大部分的非 ffmpeg播放器不能播放無損模式,所以如果考慮到兼容性問題,你可能不能使用無損模式。

 無損壓縮的例子(快速編碼)

 ffmpeg -i input -c:v libx264 -preset ultrafast -qp 0 output.mkv 

 無損壓縮的例子(高壓縮比)

 ffmpeg -i input -c:v libx264 -preset veryslow -qp 0 output.mkv 

重寫缺省預(yù)設(shè)

你可以使用-x264opts來重寫預(yù)設(shè)或者使用 libx264的私有選項(xiàng)(可以通過ffmpeg -h來完整的查看 libx264選項(xiàng))。我們并不建議你這么做除非你知道你在做什么。所有預(yù)設(shè)均是由x264的開發(fā)者創(chuàng)建的,想通過微調(diào)參數(shù)來提高輸出質(zhì)量通常是在浪費(fèi)時(shí)間。

例子:

ffmpeg -i input -c:v libx264 -preset slow -crf 22 -x264opts   keyint=123:min-keyint=20 -c:a copy output.mkv 

附加信息

ABR(Average Bit Rate)

ffmpeg -i input -c:v libx264 -b:v 1000k ....

它提供了某種“運(yùn)行均值”的目標(biāo),終極目標(biāo)是最終文件大小匹配這個(gè)“全局平均”數(shù)字(因此基本上來說,如果編碼器遇到大量碼率開銷非常小的黑幀,它將以低于要求的比特率編碼,但是在接下來幾秒內(nèi)的非黑幀它將以高質(zhì)量方式編碼方式使碼率回歸均值)使用兩邊編碼模式是這個(gè)方法變得更加有效,你可以和“max bit rate ”配合使用來防止碼率的波動。

CBR(Constant Bit Rate)

事實(shí)上根本就沒有CBR這種模式,但是你可以通過補(bǔ)充ABR參數(shù)“模擬”一個(gè)恒定比特率設(shè)置,比如:

ffmpeg -i input -c:v libx264 -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v

在這個(gè)例子中,-bufsize是一個(gè)“碼率控制緩沖區(qū)”,因此它會在每一個(gè)有用的1835k視頻數(shù)據(jù)內(nèi)強(qiáng)制一個(gè)你所要求的均值(此處為4000k),所以基本上我們會認(rèn)為接收端/終端播放器會緩沖那么多的數(shù)據(jù),因此在這個(gè)數(shù)據(jù)內(nèi)部波動是沒有問題的。

當(dāng)然,如果只有黑幀或者空白幀,它所花費(fèi)的的比特率將少于需求位率(但它會盡可能的提高質(zhì)量水平,直到crf)。

最大比特率的CRF模式

你可以通過聲明-crf和-maxrate設(shè)置來使用帶有最大比特率crf模式,比如:

ffmpeg -i input -c:v libx264 -crf 20 -maxrate 400k  -bufsize 1835k  

這將會有效的將crf值鎖定在20,但是如果輸出碼率超過400kbps,在這種情況下編碼器會將質(zhì)量降低到低于crf 20。

低延遲

x264提高了一個(gè) -tune zerolatency 選項(xiàng)。

兼容性:


如果你想讓你的視頻最大化的和目標(biāo)播放設(shè)備兼容(比如老版本的的ios或者所有的android 設(shè)備),那么你可以這做:

-profile:v baseline 

這將會關(guān)閉很多高級特性,但是它會提供很好的兼容性。也許你可能不需要這些設(shè)置,因?yàn)橐坏┠阌昧诉@些設(shè)置,在同樣的視頻質(zhì)量下與更高的編碼檔次相比會使比特率稍有增加。

關(guān)于profile列表和關(guān)于它們的描述,你可以運(yùn)行x264 --fullhelp

要牢記apple quick time 對于x264編碼的視頻只支持 YUV 420顏色空間,而且不支持任何高于 mian profile編碼檔次。這樣對于quick time 只留下了兩個(gè)兼容選項(xiàng)baseline和 main。其他的編碼檔次qucik time均不支持,雖然它們均可以在其它的播放設(shè)備上回放。

使用-ss和-t選項(xiàng)可以編碼一個(gè)段落而不是整個(gè)視頻,這樣可以快速的了解視頻編碼輸出情況。

-ss 從起始值算起的偏移時(shí)間,這個(gè)值可以以秒為單位或者HH:MM:SS格式

-t  輸出時(shí)延,這個(gè)值可以以秒為單位或者HH:MM:SS格式



問題與解答:

1 兩遍編碼模式能夠比CRF模式提供更好的質(zhì)量嗎?

  不能,但它可以更加精確地控制目標(biāo)文件大小。

2 為什么 placebo 是一個(gè)浪費(fèi)時(shí)間的玩意兒?

 與 veryslow相比,它以極高的編碼時(shí)間為代價(jià)換取了大概1%的視頻質(zhì)量提升,這是一種收益遞減準(zhǔn)則,veryslow 與 slower相比提升了3%;slower 與 slow相比提升了5%;slow 與 medium相比提升了5%~10%。

3 為什么我的無損輸出看起來是無損的?

這是由于rgb->yuv的轉(zhuǎn)換,如果你轉(zhuǎn)換到y(tǒng)uv444,它依然是無損的。

4 顯卡能夠加速x264的編碼嗎?

不,x264沒有使用(至少現(xiàn)在沒有),有一些私有編碼器使用了GPU加快了編碼速度,但這并不意味著它們經(jīng)過良好的優(yōu)化。也有可能還不如x264,或許速度更慢??偟膩碚f,ffmpeg到目前為止還不支持GPU。

 翻譯注釋:x264在2013版中已經(jīng)開始支持基于opencl的顯卡加速,用于幀類型的判定。

5 為Quick time 播放器壓制視頻

你需要使用-pix_fmt yuv420p來是你的輸出支持QT 播放器。這是因?yàn)閷τ贖.264視頻剪輯蘋果的Quick time只支持 YUV420顏色空間。否則ffmpeg會根據(jù)你的視頻源輸出與Quick time 不兼容的視頻格式或者不是基于ffmpeg的視頻。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何用ffmpeg壓縮視頻
ffmpeg常用命令
視頻高清低損壓縮命令行實(shí)現(xiàn)方案推薦
Capped CRF:節(jié)省編碼成本和數(shù)據(jù)流
理解 x264、x265、vpx 中的碼率控制模式
FFmpeg視頻轉(zhuǎn)碼技巧之
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服