《FFmpeg Basics》中文版-03-比特率/幀率/文件大小

寫在前面

如果您對(duì)音視頻技術(shù)感興趣,可以訂閱我的專題:音視頻專輯
也可以關(guān)注我的簡(jiǎn)書賬戶: 張芳濤禽笑,我后期會(huì)發(fā)布更多的音視頻以及圖像處理方面的文章。

正文

比特率和幀速率是視頻的基本特征蠢络,它們的正確設(shè)置對(duì)整體視頻質(zhì)量非常重要小泉。 如果我們知道所有包含的媒體流的比特率和持續(xù)時(shí)間配喳,我們可以計(jì)算輸出文件的最終大小。 由于在使用FFmpeg工具時(shí)對(duì)幀速率和比特率的理解很重要,因此包含每個(gè)術(shù)語(yǔ)的簡(jiǎn)短描述飒焦。

幀率(頻率)的介紹

幀速率是編碼成視頻文件的每秒幀數(shù)(FPS或fps)蜈膨,人眼需要至少約15 fps來(lái)觀看連續(xù)運(yùn)動(dòng)。 幀率也稱為幀頻牺荠,其單位是赫茲(Hz)翁巍,LCD顯示器通常具有60 Hz的頻率。

有兩種幀速率 - 隔行(在FPS編號(hào)后表示為i)和逐行(在FPS編號(hào)后表示為p)休雌。

在電視中使用隔行幀率:

*NTSC標(biāo)準(zhǔn)使用60i fps灶壶,意味著每秒隔行掃描60次(30幀)

  • PAL和SECAM標(biāo)準(zhǔn)使用50i fps,這意味著50隔行場(chǎng)杈曲,相當(dāng)于每秒25幀24p驰凛,25p和30p的逐行幀率被用于電影行業(yè)。 高端HDTV產(chǎn)品使用較高的幀頻50p / 60p担扑。

常見(jiàn)的視頻幀率


藍(lán)色的恰响,,我弄不出來(lái)涌献,就用圖片代替了
FPS
i=interlaced
p=progressive
描述
24p or 23.976 從20世紀(jì)20年代開(kāi)始胚宦,電影行業(yè)的標(biāo)準(zhǔn)幀速率,所有的電影都是以這個(gè)頻率拍攝的。 當(dāng)這些電影被采用到NTSC電視廣播時(shí)枢劝,幀速率降低到24×1000/1001 = 23.976值井联,但是對(duì)于PAL / SECAM電視,電影的幀速率增加到25幀/秒您旁。
25p 由于25個(gè)逐行掃描視頻可輕松轉(zhuǎn)換為50個(gè)隔行掃描電視場(chǎng)烙常,因此電影頻率為50赫茲(PAL和SECAM標(biāo)準(zhǔn))的國(guó)家中的電影和電視的標(biāo)準(zhǔn)幀頻。
30p 常見(jiàn)的視頻幀速率被冒,常用于數(shù)碼相機(jī)和攝像機(jī)军掂。 它可用于60赫茲(NTSC)隔行場(chǎng)的電視廣播。
50i PAL和SECAM電視的標(biāo)準(zhǔn)場(chǎng)率(隔行幀率)昨悼。
60ior 59.94 NTSC電視的標(biāo)準(zhǔn)場(chǎng)頻率蝗锥,在彩電發(fā)明之后,幀速率被降低到60 * 1000/1001 = 59.94的值率触,以防止色度副載波和聲音載波之間的干擾终议。
50p/60p HDTV(高清晰度電視)的通用幀頻。
48p 提議的幀速率葱蝗,目前經(jīng)過(guò)測(cè)試了
72p 提議的幀速率穴张,目前經(jīng)過(guò)測(cè)試了
120p 為UHDTV(超高清晰度電視)標(biāo)準(zhǔn)化的漸進(jìn)式格式,計(jì)劃成為UHDTV的單一全球“雙精度”幀速率(而不是使用PAL標(biāo)準(zhǔn)的100 Hz和NTSC標(biāo)準(zhǔn)的119.88 Hz)

幀率設(shè)置

使用- r選項(xiàng)

要設(shè)置視頻幀速率两曼,我們?cè)谳敵鑫募笆褂?r選項(xiàng)皂甘,語(yǔ)法是:

ffmpeg -i input -r fps output

例如改變電影的幀率。avi文件從25到30 fps值悼凑,我們使用命令:

ffmpeg -i input.avi -r 30 output.mp4

我給大家演示一下偿枕,我把我的根目錄下面的一個(gè)SDWebimage.mp4文件輸出為30fps的test.mp4文件 使用的命令如下:(你用自己的視頻文件做測(cè)試,別瞎模仿)

 ffmpeg -i /Users/zhangfangtao/SDWebImage.mp4 -r 30 test.mp4

看到?jīng)]户辫,下面真的就出來(lái)了輸出的test.mp4:


先讓你們看一下之前的視頻信息是什么:

再讓你們看一下現(xiàn)在的視頻信息是什么:


  • 有沒(méi)有發(fā)現(xiàn)渐夸,重新編碼以后不僅僅fps變化了,Data Rate也改變了?因?yàn)槲覜](méi)有設(shè)置渔欢,F(xiàn)Fmpeg使用了默認(rèn)的比特率墓塌,重新編碼之后,自動(dòng)降碼了奥额。所以苫幢,建議各位做轉(zhuǎn)碼的時(shí)候把參數(shù)填的全面一些,要不然會(huì)有意外存在垫挨。

當(dāng)使用原始輸入格式時(shí)态坦,-r選項(xiàng)也可以在輸入之前使用。

使用fps過(guò)濾器

另一種設(shè)置幀速率的方法是使用fps過(guò)濾器棒拂,這在過(guò)濾鏈中尤其有用。

描述 將視頻幀速率更改為指定的值。
Syntax fps=fps=number_of_frames
fps 指定輸出幀速率的數(shù)字或預(yù)定義縮寫帚屉。

例如谜诫,要更改剪輯的輸入幀速率。mpg文件到值25攻旦,我們使用命令喻旷。

ffmpeg -i clip.mpg -vf fps=fps=25 clip.webm

我親自給大家測(cè)試一下,我用的是我剛才轉(zhuǎn)碼出來(lái)的test.mp4牢屋,轉(zhuǎn)碼成為test.webm,具體的命令行如下:

ffmpeg -i /Users/zhangfangtao/test.mp4 -vf fps=fps=25 test.webm
因?yàn)闆](méi)有設(shè)置bit rate且预,所以給了一個(gè)默認(rèn)值96000bps

幀速率的預(yù)定義值。

除了數(shù)值烙无,設(shè)置幀率的兩種方法都接受下一個(gè)預(yù)定義的文本值:

幀速率的預(yù)定義縮寫锋谐。

縮寫 精確值 相應(yīng)的FPS(相應(yīng)的幀)
ntsc-film 24000/1001 23.97
film 24/1 24
pal, qpal, spal 25/1 25
ntsc, qntsc, sntsc 30000/1001 29.97

例如,設(shè)置幀速率為29.97 fps截酷,接下來(lái)的3個(gè)命令給出了相同的結(jié)果:這個(gè)就不用我給大家示范了吧涮拗。。迂苛。

ffmpeg -i input.avi -r 29.97 output.mpg
ffmpeg -i input.avi -r 30000/1001 output.mpg
ffmpeg -i input.avi -r ntsc output.mpg

位(數(shù)據(jù))率的介紹

比特率(也是比特率或數(shù)據(jù)率)是決定整體音頻或視頻質(zhì)量的參數(shù)三热。 它規(guī)定了每時(shí)間單位處理的位數(shù),在FFmpeg中三幻,位速率以每秒位數(shù)表示就漾。


類型的比特率

類型 縮寫 描述
平均比特率 ABR 平均每秒處理的位數(shù),該值也用于VBR編碼念搬,需要時(shí)是輸出的某個(gè)文件大小
恒定比特率 CBR 每秒處理的比特?cái)?shù)是恒定的抑堡,這對(duì)于存儲(chǔ)是不實(shí)際的,因?yàn)榫哂锌焖龠\(yùn)動(dòng)的部分需要比靜態(tài)比特更多的比特锁蠕,CBR主要用于多媒體流
可變比特率 VBR 每秒處理的比特?cái)?shù)是可變的夷野,復(fù)雜的場(chǎng)景或聲音被編碼更多的數(shù)據(jù)并與CBR進(jìn)行比較,相同尺寸的文件的VBR質(zhì)量比CBR更好(VBR編碼比CBR需要更多的時(shí)間和CPU功率 荣倾,但最近的媒體播放器可以充分解碼VBR悯搔。)

設(shè)置比特率

比特率決定了存儲(chǔ)1秒編碼流的位數(shù),它使用-b選項(xiàng)設(shè)置舌仍,以區(qū)分推薦使用-b:a或-b:v格式的音頻和視頻流妒貌。 例如,要設(shè)置總體1.5 Mbit / s的比特率铸豁,我們可以使用以下命令:

ffmpeg -i film.avi -b 1.5M film.mp4

我是用的是我電腦桌面上的一個(gè)視頻灌曙,使用的代碼如下:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -b 1.5M newTest.mp4

原來(lái)的視頻信息是:


轉(zhuǎn)碼之后的視頻信息是:



如果可能的話,ffmpeg使用一個(gè)可變比特率(VBR)节芥,并對(duì)比具有快速運(yùn)動(dòng)的部分具有更少比特的靜態(tài)部分進(jìn)行編碼在刺。 ffmpeg通常用于使用高級(jí)編解碼器來(lái)降低輸出文件的比特率和相應(yīng)的文件大小逆害,例如:

ffmpeg -i input.avi -b:v 1500k output.mp4

該命令將輸入比特率更改為每秒1500千比特。

在我電腦上測(cè)試的命令行是:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4  -b:v 1500k /Users/zhangfangtao/Desktop/newTest.mp4 

轉(zhuǎn)碼之后的結(jié)果如下圖:


固定比特率(CBR)設(shè)置

例如視頻會(huì)議之類的實(shí)時(shí)視頻流蚣驼,可以使用固定的比特率魄幕,因?yàn)閭鬏數(shù)臄?shù)據(jù)不能被緩沖。為了設(shè)置輸出的恒定比特率颖杏,三個(gè)參數(shù)必須具有相同的值:比特率(-b選項(xiàng))纯陨、最小速率(-minrate)和最大速率(-maxrate)。對(duì)于minrate和maxrate選項(xiàng)可以添加一個(gè)流指示符留储,maxrate選項(xiàng)需要設(shè)置一個(gè)-bufsize選項(xiàng)(比特的速率控制緩沖區(qū)大小)翼抠。例如,要設(shè)置0.5 Mbit/s的CBR获讳,我們可以使用以下命令:

ffmpeg -i in.avi -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M out.mkv

我自己測(cè)試的命令行是:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -b 0.5M -minrate 0.5M -maxrate 0.5M -bufsize 1M /Users/zhangfangtao/Desktop/newTest.mp4 

輸出的視頻信息是:

設(shè)置輸出文件的最大尺寸

為了使輸出文件的大小保持一定的值阴颖,我們使用-fs選項(xiàng)(文件大小的縮寫),期望值以字節(jié)為單位赔嚎。 例如膘盖,要指定10兆字節(jié)的最大輸出文件大小,我們可以使用以下命令:

ffmpeg -i input.avi -fs 10MB output.mp4

給大家看一下我自己的測(cè)試命令行:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4 -fs 1MB /Users/zhangfangtao/Desktop/newTest.mp4

結(jié)果可能要讓大家失望了尤误,我設(shè)置的1MB的大小侠畔,結(jié)果輸出的文件將近8MB(ーー゛)我去。损晤。软棺。

我把大小的控制設(shè)置成1024K,就會(huì)精確很多尤勋,新的命令行:

ffmpeg -i /Users/zhangfangtao/Desktop/test.mp4  -fs 1024K /Users/zhangfangtao/Desktop/newTest.mp4 

再看一下結(jié)果:

文件的大小計(jì)算

編碼輸出的最終文件大小是音頻和視頻流大小的總和喘落。以字節(jié)為單位的視頻流大小的方程是(由比特到字節(jié)的轉(zhuǎn)換為8):

video_size = video_bitrate * time_in_seconds / 8

如果音頻未壓縮,其大小由公式計(jì)算:

 audio_size = sampling_rate * bit_depth * channels * time_in_seconds / 8

要計(jì)算壓縮音頻流的文件大小最冰,我們需要知道它的比特率和方程瘦棋。

audio_size = bitrate * time_in_seconds / 8。

例如暖哨,用1500 kbits/s的視頻比特率和128 kbits/s音頻比特率計(jì)算10分鐘視頻剪輯的最終大小赌朋,我們可以使用這些公式:

file_size = video_size + audio_size
file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8
file_size = (1500 kbit/s + 128 kbits/s) * 600 s
file_size = 1628 kbit/s * 600 s
file_size = 976800 kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125 KB
file_size = 119238.28125 KB / 1024 = 116.443634033203125 MB ≈ 116.44 MB
  • 1 byte (B) = 8 bits (b)
  • 1 kilobyte (kB or KB) = 1024 B
  • 1 megabyte (MB) = 1024 KB, 等.
    最終文件的大小比計(jì)算的要大一些,因?yàn)榘艘粋€(gè)muxing開(kāi)銷和文件元數(shù)據(jù)篇裁。

都是計(jì)算題沛慢,我就不發(fā)表什么個(gè)人的測(cè)試數(shù)據(jù)了。达布。团甲。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市黍聂,隨后出現(xiàn)的幾起案子躺苦,更是在濱河造成了極大的恐慌身腻,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圾另,死亡現(xiàn)場(chǎng)離奇詭異霸株,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)集乔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)坡椒,“玉大人扰路,你說(shuō)我怎么就攤上這事【蟮穑” “怎么了汗唱?”我有些...
    開(kāi)封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)丈攒。 經(jīng)常有香客問(wèn)我哩罪,道長(zhǎng),這世上最難降的妖魔是什么巡验? 我笑而不...
    開(kāi)封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任际插,我火速辦了婚禮,結(jié)果婚禮上显设,老公的妹妹穿的比我還像新娘框弛。我一直安慰自己,他們只是感情好捕捂,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布瑟枫。 她就那樣靜靜地躺著,像睡著了一般指攒。 火紅的嫁衣襯著肌膚如雪慷妙。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天允悦,我揣著相機(jī)與錄音膝擂,去河邊找鬼。 笑死澡屡,一個(gè)胖子當(dāng)著我的面吹牛猿挚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播驶鹉,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绩蜻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了室埋?” 一聲冷哼從身側(cè)響起办绝,我...
    開(kāi)封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤伊约,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后孕蝉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屡律,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年降淮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了超埋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡佳鳖,死狀恐怖霍殴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情系吩,我是刑警寧澤来庭,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站穿挨,受9級(jí)特大地震影響月弛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜科盛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一帽衙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧土涝,春花似錦佛寿、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蜡饵,卻和暖如春弹渔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溯祸。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工肢专, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焦辅。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓博杖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親筷登。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剃根,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.簡(jiǎn)介 ffmpeg [global_options] {[input_file_options] -i inp...
    你家旭哥閱讀 6,589評(píng)論 1 4
  • 基礎(chǔ)知識(shí) 1、碼流(碼率) 碼流(Data Rate)是指視頻文件在單位時(shí)間內(nèi)使用的數(shù)據(jù)流量前方,也叫碼率或碼流率狈醉,通...
    zjjcc閱讀 18,716評(píng)論 1 14
  • 一廉油、工作區(qū)和工作流程 1.工作區(qū)和面板 保存、刪除苗傅、重置工作區(qū)褪阆撸靠、編組渣慕、浮動(dòng)面板 2.首選項(xiàng) 常規(guī)嘶炭、預(yù)覽、導(dǎo)入摇庙、...
    朱細(xì)細(xì)閱讀 7,513評(píng)論 0 52
  • 記得上課時(shí)一起望著數(shù)學(xué)老師一臉迷茫的神情卫袒,記得大家下課亂翻天的樣子,記得上課趴在桌子上呼呼大睡而同桌喊了一聲老師來(lái)...
    彤g閱讀 473評(píng)論 0 2
  • 面對(duì)如火如荼的數(shù)字貨幣市場(chǎng),新人怎么購(gòu)買數(shù)字貨幣户秤?一般的網(wǎng)站都是用數(shù)字貨幣購(gòu)買數(shù)字貨幣码秉,那么當(dāng)手中只有人民幣或者其...
    埋你個(gè)頭啊閱讀 802評(píng)論 0 0