遇到一個(gè)需求:
有一個(gè)H264的視頻流源文件,希望能夠想辦法轉(zhuǎn)換成mp4的格式。
存在的問題:
mp4格式的視頻大多數(shù)是固定分辨率的,比如960*480,如果h264視頻流文件是固定尺寸的,那就沒有任何問題。
但是,這個(gè)視頻流文件!
不!是!固!定!尺!寸!的!
問題截圖:
舉個(gè)例子,我已手機(jī)的錄屏為例,當(dāng)手機(jī)橫屏的時(shí)候,分辨率是 寬度*高度,當(dāng)手機(jī)豎屏?xí)r,分辨率是高度*寬度。如果強(qiáng)行轉(zhuǎn)碼的話,會(huì)出現(xiàn)下面的情況。
圖像就會(huì)直接被壓縮了。
解決方案
1. 確保視頻流文件的正確性
? ? ? ? 下載一個(gè)vlc media player,直接播放H264文件,查看文件是不是正常的。
2. 使用ffmpeg解碼
ffmpeg -i .\輸入文件.h264 -vf "scale=w=960:h=540:force_original_aspect_ratio=decrease,pad=960:540:(ow-iw)/2:(oh-ih)/2" -c:v libx264 -preset ultrafast -r 10 -b:a 32k -preset fast -strict experimental 輸出文件.mp4 -y
3. 主要參數(shù)說明
下面對(duì)主要起作用的參數(shù)說明一下,畢竟要改變分辨率,又要Hold mp4的固定分辨率,就需要做一些填充:
scale: 固定目標(biāo)分辨率
force_original_aspect_ratio=decrease·表示保持原始寬高比,并且只會(huì)減小分辨率以適應(yīng)目標(biāo)分辨率。
pad過濾器用于填充視頻,確保輸出分辨率為1920x1080,同時(shí)保持視頻在中央,任何多余的部分都會(huì)被填充為黑色。
-crf 參數(shù)用于指定視頻的質(zhì)量。CRF (Constant Rate Factor) 是一種基于質(zhì)量的壓縮方法,值越小,視頻質(zhì)量越高,文件越大。通常,推薦的范圍是18到28之間。(這個(gè)參數(shù)效果一般,所以最終沒使用,可以酌情使用)
-preset·參數(shù)用于指定編碼速度和文件大小的平衡。可用的預(yù)設(shè)包括ultrafast、superfast.veryfast、faster、fast、medium等,速度從快到慢,文件大小也相應(yīng)變化。
4. 結(jié)果展示
最終結(jié)果就是一個(gè)設(shè)定了scale大小的mp4,但是當(dāng)分辨率不一致的時(shí)候,會(huì)居中,兩邊填充黑色背景,對(duì)視頻要求沒那么高的可以這樣處理。文章來源:http://www.zghlxwxcb.cn/news/detail-797646.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-797646.html
到了這里,關(guān)于FFmpeg轉(zhuǎn)碼分辨率會(huì)變化的視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!