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

打開APP
userphoto
未登錄

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

開通VIP
ffmpeg常用命令

1. 視頻格式轉(zhuǎn)換

(其實(shí)格式轉(zhuǎn)換說法不太準(zhǔn)確,但大家都這么叫,準(zhǔn)確的說,應(yīng)該是視頻容器轉(zhuǎn)換) 比如一個(gè)avi文件,想轉(zhuǎn)為mp4,或者一個(gè)mp4想轉(zhuǎn)為ts。
ffmpeg -i input.avi output.mp4
ffmpeg -i input.mp4 output.ts
我目測這個(gè)已經(jīng)能滿足很多人的需求了。

2. 提取音頻

比如我有一個(gè)“曉松奇談”,可是我不想看到他的臉,我只想聽聲音, 地鐵上可以聽,咋辦?
ffmpeg -i 曉松奇談.mp4 -acodec copy -vn output.aac
上面的命令,默認(rèn)mp4的audio codec是aac,如果不是會出錯(cuò),咱可以暴力一點(diǎn),不管什么音頻,都轉(zhuǎn)為最常見的aac。
ffmpeg -i 曉松奇談.mp4 -acodec aac -vn output.aac

3. 提取視頻

我目測有些IT員工,特別是做嵌入式的,比如機(jī)頂盒,想debug一下,沒有音頻的情況下,播放一個(gè)視頻幾天幾夜會不會crash,這時(shí)候你需要一個(gè)純視頻文件,可以這么干。
ffmpeg -i input.mp4 -vcodec copy -an output.mp4

4. 視頻剪切

經(jīng)常要測試視頻,但是只需要測幾秒鐘,可是視頻卻有幾個(gè)G,咋辦?切啊!
下面的命令,就可以從
ffmpeg -ss 00:00:00 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
-ss表示開始切割的時(shí)間,-t表示要切多少。上面就是從開始,切5秒鐘出來。

5. 碼率控制

碼率控制對于在線視頻比較重要。因?yàn)樵诰€視頻需要考慮其能提供的帶寬。

那么,什么是碼率?很簡單:
bitrate = file size / duration
比如一個(gè)文件20.8M,時(shí)長1分鐘,那么,碼率就是:
biterate = 20.8M bit/60s = 20.8*1024*1024*8 bit/60s= 2831Kbps
一般音頻的碼率只有固定幾種,比如是128Kbps,
那么,video的就是
video biterate = 2831Kbps -128Kbps = 2703Kbps。

說完背景了。好了,來說ffmpeg如何控制碼率。
ffmpg控制碼率有3種選擇,-minrate -b:v -maxrate
-b:v主要是控制平均碼率。
比如一個(gè)視頻源的碼率太高了,有10Mbps,文件太大,想把文件弄小一點(diǎn),但是又不破壞分辨率。
ffmpeg -i input.mp4 -b:v 2000k output.mp4
上面把碼率從原碼率轉(zhuǎn)成2Mbps碼率,這樣其實(shí)也間接讓文件變小了。目測接近一半。
不過,ffmpeg官方wiki比較建議,設(shè)置b:v時(shí),同時(shí)加上 -bufsize
-bufsize 用于設(shè)置碼率控制緩沖器的大小,設(shè)置的好處是,讓整體的碼率更趨近于希望的值,減少波動。(簡單來說,比如1 2的平均值是1.5, 1.49 1.51 也是1.5, 當(dāng)然是第二種比較好)
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4

-minrate -maxrate就簡單了,在線視頻有時(shí)候,希望碼率波動,不要超過一個(gè)閾值,可以設(shè)置maxrate。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4

6. 視頻編碼格式轉(zhuǎn)換

比如一個(gè)視頻的編碼是MPEG4,想用H264編碼,咋辦?
ffmpeg -i input.mp4 -vcodec h264 output.mp4
相反也一樣
ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4

當(dāng)然了,如果ffmpeg當(dāng)時(shí)編譯時(shí),添加了外部的x265或者X264,那也可以用外部的編碼器來編碼。(不知道什么是X265,可以Google一下,簡單的說,就是她不包含在ffmpeg的源碼里,是獨(dú)立的一個(gè)開源代碼,用于編碼HEVC,ffmpeg編碼時(shí)可以調(diào)用它。當(dāng)然了,ffmpeg自己也有編碼器)
ffmpeg -i input.mp4 -c:v libx265 output.mp4
ffmpeg -i input.mp4 -c:v libx264 output.mp4

7. 只提取視頻ES數(shù)據(jù)

這個(gè)可能做開發(fā)的人會用到,順便提一下吧。
ffmpeg –i input.mp4 –vcodec copy –an –f m4v output.h264

8. 過濾器的使用

這個(gè)我在另一篇博客提到了,這里貼一下吧。

8.1 將輸入的1920x1080縮小到960x540輸出:

ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
//ps: 如果540不寫,寫成-1,即scale=960:-1, 那也是可以的,ffmpeg會通知縮放濾鏡在輸出時(shí)保持原始的寬高比。

8.2 為視頻添加logo

比如,我有這么一個(gè)圖片


想要貼到一個(gè)視頻上,那可以用如下命令:
./ffmpeg -i input.mp4 -i iQIYI_logo.png -filter_complex overlay output.mp4
結(jié)果如下所示:

要貼到其他地方?看下面:
右上角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w output.mp4
左下角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=0:H-h output.mp4
右下角:
./ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=W-w:H-h output.mp4

8.3 去掉視頻的logo

有時(shí)候,下載了某個(gè)網(wǎng)站的視頻,但是有l(wèi)ogo很煩,咋辦?有辦法,用ffmpeg的delogo過濾器。
語法:-vf delogo=x:y:w:h[:t[:show]]
x:y 離左上角的坐標(biāo)
w:h logo的寬和高
t: 矩形邊緣的厚度默認(rèn)值4
show:若設(shè)置為1有一個(gè)綠色的矩形,默認(rèn)值0。

ffmpeg -i input.mp4 -vf delogo=0:0:220:90:100:1 output.mp4
結(jié)果如下所示:


其他小眾的用法

1. H264編碼profile & level控制

背景知識

先科普一下profile&level吧,知道的請飄過。(這里討論最常用的H264)
H.264有四種畫質(zhì)級別,分別是baseline, extended, main, high:
  1、Baseline Profile:基本畫質(zhì)。支持I/P 幀,只支持無交錯(cuò)(Progressive)和CAVLC;
  2、Extended profile:進(jìn)階畫質(zhì)。支持I/P/B/SP/SI 幀,只支持無交錯(cuò)(Progressive)和CAVLC;(用的少)
  3、Main profile:主流畫質(zhì)。提供I/P/B 幀,支持無交錯(cuò)(Progressive)和交錯(cuò)(Interlaced),
    也支持CAVLC 和CABAC 的支持;
  4、High profile:高級畫質(zhì)。在main Profile 的基礎(chǔ)上增加了8x8內(nèi)部預(yù)測、自定義量化、 無損視頻編碼和更多的YUV 格式;
H.264 Baseline profile、Extended profile和Main profile都是針對8位樣本數(shù)據(jù)、4:2:0格式(YUV)的視頻序列。在相同配置情況下,High profile(HP)可以比Main profile(MP)降低10%的碼率。
根據(jù)應(yīng)用領(lǐng)域的不同,Baseline profile多應(yīng)用于實(shí)時(shí)通信領(lǐng)域,Main profile多應(yīng)用于流媒體領(lǐng)域,High profile則多應(yīng)用于廣電和存儲領(lǐng)域。

下圖清楚的給出不同的profile&level的性能區(qū)別。
profile

level

ffmpeg如何控制profile&level

舉3個(gè)例子吧
ffmpeg -i input.mp4 -profile:v baseline -level 3.0 output.mp4

ffmpeg -i input.mp4 -profile:v main -level 4.2 output.mp4

ffmpeg -i input.mp4 -profile:v high -level 5.1 output.mp4

如果ffmpeg編譯時(shí)加了external的libx264,那就這么寫:
ffmpeg -i input.mp4 -c:v libx264 -x264-params "profile=high:level=3.0" output.mp4

從壓縮比例來說,baseline< main < high,對于帶寬比較局限的在線視頻,可能會選擇high,但有些時(shí)候,做個(gè)小視頻,希望所有的設(shè)備基本都能解碼(有些低端設(shè)備或早期的設(shè)備只能解碼baseline),那就犧牲文件大小吧,用baseline。自己取舍吧!

蘋果的設(shè)備對不同profile的支持。

2. 編碼效率和視頻質(zhì)量的取舍(preset, crf)

除了上面提到的,強(qiáng)行配置biterate,或者強(qiáng)行配置profile/level,還有2個(gè)參數(shù)可以控制編碼效率。
一個(gè)是preset,一個(gè)是crf。
preset也挺粗暴,基本原則就是,如果你覺得編碼太快或太慢了,想改改,可以用profile。
preset有如下參數(shù)可用:

ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow and placebo.
編碼加快,意味著信息丟失越嚴(yán)重,輸出圖像質(zhì)量越差。

CRF(Constant Rate Factor): 范圍 0-51: 0是編碼毫無丟失信息, 23 is 默認(rèn), 51 是最差的情況。相對合理的區(qū)間是18-28.
值越大,壓縮效率越高,但也意味著信息丟失越嚴(yán)重,輸出圖像質(zhì)量越差。

舉個(gè)例子吧。
ffmpeg -i input -c:v libx264 -profile:v main -preset:v fast -level 3.1 -x264opts crf=18
(參考自:https://trac.ffmpeg.org/wiki/Encode/H.264)

3. H265 (HEVC)編碼tile&level控制

背景知識

和H264的profile&level一樣,為了應(yīng)對不同應(yīng)用的需求,HEVC制定了“層級”(tier) 和“等級”(level)。
tier只有main和high。
level有13級,如下所示:

不多說,直接給出怎么用。(supposed你用libx265編碼)
ffmpeg -i input.mp4 -c:v libx265 -x265-params "profile=high:level=3.0" output.mp4

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
FFmpeg命令行轉(zhuǎn)碼
使用ffmpeg從視頻中提取純音頻&純視頻
Linux下ffmpeg視頻截取命令
FFmpeg常用命令行
視頻技術(shù)中如何控制視頻的編碼碼率?附FFmpeg代碼舉例
FFmpeg 視頻處理入門教程
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服