ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会
引言
FFmpeg是音視頻處理領(lǐng)域,應(yīng)用范圍最廣的一個項(xiàng)目。
我們?nèi)粘J褂玫拇笮∽烂姘嬉曨l播放器,或者命令行使用的播放器,大多數(shù)是基于 ffmpeg 開發(fā)的。
如果說它是音視頻編解碼處理中的老大哥,這一點(diǎn)都不為過。
本文主要從一個小知識點(diǎn)作為切入面,深入介紹一下,如何有效地壓縮和降低視頻文件的體積。
問題的提出
有一位題主遇到下面的情況,他有一個視頻文件,寬高比是 1024x576,現(xiàn)在想要將尺寸調(diào)整為 720x480,應(yīng)該怎么辦?
當(dāng)然了,這對于 ffmpeg 應(yīng)用程序來說是小菜一碟。只用執(zhí)行下面一行指令。
ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv其中:
-s:是 --scale 的短選項(xiàng),用于指定輸出文件的畫面寬高比;
-c:a:是輸出音視頻的盒子,copy 說明了是不做任何處理,原樣輸出。
如果想要限制畫面寬度,而對于畫面高度想要自動的進(jìn)行裁切,那么就要用到過濾器。執(zhí)行下面一行指令。
ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv-1將告訴ffmpeg自動選擇與提供的寬度相關(guān)的正確高度,以保持寬高比。如果用戶給定了高度,那么-1則可以用于指定保持寬高比中的寬度。
使用libx264時,Scale的一個缺點(diǎn)是此編碼器需要偶數(shù)值,Scale可能會自動選擇奇數(shù)值,從而導(dǎo)致錯誤:寬度或高度不能被2整除。
你可以告訴Scale為給定高度選擇偶數(shù)值(在本例中為720):
scale="trunc(oh*a/2)*2:720"或者指定高度,
scale="1280:trunc(ow/a/2)*2"引申討論
一般情況下我們會把固定格式寬高比的視頻文件轉(zhuǎn)換為統(tǒng)一格式,用于適配不同型號的手機(jī)。那么有沒有辦法,在不知道目標(biāo)型號手機(jī)的寬高比的時候,按照百分比為視頻畫面進(jìn)行調(diào)整呢?答案是肯定有的。
比如下面這樣對畫面進(jìn)行寬高50%的收縮。
ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi你應(yīng)該會注意到我們使用了兩個變量。
- iw:輸入文件的畫面寬度
- ih:輸入文件的畫面高度
這兩個是系統(tǒng)的常量,可以拿來直接使用。
寫在最后
其實(shí) ffmpeg 所提供的過濾器功能十分復(fù)雜,而且功能十分強(qiáng)大。可應(yīng)用于眾多領(lǐng)域的音視頻轉(zhuǎn)換,只要是輸入的視頻流,均可進(jìn)行深度的處理。
Happy coding :_)
我是 @程序員小助手 ,持續(xù)分享編程知識,歡迎關(guān)注。總結(jié)
以上是生活随笔為你收集整理的ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 稀疏多项式的运算用链表_用最简单的大白话
- 下一篇: 专业舞台音响设备有哪些