《Android音視頻系列-1》從FFmpeg開始,先玩玩常用命令

前言:前兩個月寫了OpenGL入門系列文章,感興趣可以點擊我的主頁進行查看。

從今天開始,預計花費3個月時間(晚上+周末),學習Android音視頻開發。

Android音視頻開發的系列文章不多,而且一開始介紹各種概念,看了想睡覺,實踐是檢驗真理的唯一標準,so,第一篇文章先實踐一下,玩玩FFmpeg,圖比較多~

進入正題

作為音視頻系列的第一篇文章,先不說音視頻的一堆概念,后面涉及到代碼再慢慢介紹,先來玩一玩目前音視頻領域的一哥 ---》FFmpeg

1、下載靜態庫

這里我選mac

https://ffmpeg.org/download.html#build-mac

下載完解壓,進bin目錄,就可以玩玩shell命令了

test.mp4是我放進去的,一個抖音毒雞湯視頻,接下來實戰一波~

2、玩玩常用命令

1.改變幀率 -r

幀率:每秒繪制的次數,玩過王者榮耀的人應該都知道,幀率越高越流暢

./ffmpeg -i test.mp4 -r 30 output_-r30.mp4

2.改變碼率 -b

碼率:(比特率)是一個決定音頻或視頻質量的參數,在FFmpeg中,碼率是指每秒比特數。-b:v表示視頻碼率,-b:a表示音頻碼率。例如,設置每秒400k,可以用以下命令

./ffmpeg -i test.mp4 -b:v 400k output-b400k.mp4

一個15m的視頻通過設置碼率400k,大小變成了3m,清晰度還可以。


3.設置輸出文件大小, -fs

./ffmpeg -i test.mp4 -fs 5MB output-fs-5MB.mp4

文件大小單位是byte,
輸出文件大小是視頻流和音頻流文件大小的總和。

4.調整視頻分辨率(寬高) -s

./ffmpeg -i test.mp4 -s 320x240 output_320x240.mp4


可以看到,變形了

5.去掉音頻 -an

./ffmpeg -an -i test.mp4 output-an.mp4

輸出的mp4只有視頻沒有聲音

6.裁剪/填充視頻

-vf filter_graph ,設置視頻過濾器

過濾器有很多種

6.1裁剪: crop
盜一張圖

裁剪左邊1/3

./ffmpeg -i test.mp4 -vf crop=iw/3:ih:0:0 output_crop1.mp4

左邊

中間1/3

./ffmpeg -i test.mp4 -vf crop=iw/3:ih:iw/3:0 output_crop2.mp4

中間

右邊1/3

./ffmpeg -i test.mp4 -vf crop=iw/3:ih:iw/3*2:0 output_crop3.mp4

右邊

裁剪矩形中間w寬和h高區域(w:400,h:400)

./ffmpeg -i test.mp4 -vf crop=400:400 output_crop_400.mp4


默認從輸入視頻的中間區域開始

裁剪中間一半

./ffmpeg -i test.mp4 -vf crop=iw/2:ih/2 output_crop_w0.5h0.5.mp4

6.2 填充: pad

在視頻幀上增加一快額外區域
語法:

pad=width[:height:[:x[:y:[:color]]]]

給視頻加一個30像素厚度的粉色邊框

./ffmpeg -i test.mp4 -vf pad=iw+60:ih+60:30:30:pink output_pad.mp4

4:3轉16:9

./ffmpeg -i test.mp4 -vf pad=ih*16/9:ih:(ow-iw)/2:0 output_16-9.mp4

image.png

高度保持不變,寬度等于高度ih*16/9,x用表達式(ow-iw)/2計算

16:9轉4:3
寬度不變,高=寬x3/4

./ffmpeg -i output_16-9.mp4 -vf pad=iw:iw*3/4:0:oh/2-ih/2 output_4-3.mp4

7. 翻轉和旋轉

7.1 翻轉

水平翻轉: -vf hflip

./ffmpeg -i test.mp4 -vf hflip output_hflip.mp4

垂直翻轉:-vf vflip

./ffmpeg -i test.mp4 -vf vflip output_vflip.mp4

7.2 旋轉

語法:transpose={0,1,2,3}
0:逆時針旋轉90°然后垂直翻轉
1:順時針旋轉90°
2:逆時針旋轉90°
3:順時針旋轉90°然后水平翻轉

逆時針旋轉90°然后垂直翻轉

./ffmpeg -i test.mp4 -vf transpose=0 output_transpose0.mp4

逆時針旋轉90°然后垂直翻轉

8.模糊和銳化視頻

使用smartblur 過濾器,不影響圖像輪廓

./ffmpeg -i test.mp4 -vf smartblur=5:0.8:0 output_smartblur.mp4

設置luma的半徑5,亮度0.8,亮度閾值是0


銳化或模糊視頻幀,可以使用unsharp濾波器,使用默認值

./ffmpeg -i test.mp4 -vf unsharp output_unsharp.mp4

hwdn3d 用于去噪

./ffmpeg -i test.mp4 -vf hqdn3d output_hqdn3d.mp4

9.畫中畫

兩個輸入,一個是原視頻,一個是logo(畫中畫)

9.1 logo在左上角

./ffmpeg -i test.mp4 -i logo.png -filter_complex overlay output_overlay.mp4

9.2 logo在右上角

./ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=W-w output_overlay_right_top.mp4

W,H --背景圖寬和高
w,h -- 前景圖(logo)寬和高

9.3 logo 在右下角

./ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=W-w:H-h output_overlay_right_bottom.mp4

9.4 同理,logo在左下角

./ffmpeg -i test.mp4 -i logo.png -filter_complex overlay=0:H-h output_overlay_left_bottom.mp4

9.5 一定時間間隔后添加logo,-itsoffset

./ffmpeg -i test.mp4 -itsoffset 5 -i logo.png -filter_complex overlay output_time5_logo.mp4

logo 在5秒的時候顯示
9.6 視頻中加入計時器

創建2位數計時器,大小是61*52像素

./ffmpeg -f lavfi -i testsrc -vf crop=61:52:224:94 -t 30 timer.ogg

視頻加入計時器

./ffmpeg -i test.mp4 -i timer.ogg -filter_complex overlay=W-w:0 output_timer.mp4

右上角計時器
9.7 視頻上添加文字

語法:

drawtext=fontfile=font_f:text=text1[:p3=v3[:p4=v4[…]]]
x:離左上角的橫坐標
y: 離左上角的縱坐標
fontcolor:字體顏色
fontsize:字體大小
text:文本內容
textfile:文本文件
t:時間戳,單位秒
n:幀數開始位置為0
draw/enable:控制文件顯示,若值為0不顯示,1顯示,可以使用函數

在左上角添加Welcome文字

./ffplay -f lavfi -i color=c=white -vf drawtext=fontfile=arial.ttf:text=Welcome

arial.ttf 是一個字體文件,大家隨便下載一個ttf文件即可。

頂部水平滾動

./ffplay -i test.mp4 -vf drawtext="fontfile=arial.ttf:text='Dynamic RTL text':x=w-t*50:fontcolor=darkorange:fontsize=30"

底部水平滾動,文字從txt文件讀,注意中文會亂碼

./ffplay -i test.mp4 -vf drawtext="fontfile=arial.ttf:textfile=textfile.txt:x=w-t*50:y=h-th:fontcolor=darkorange:fontsize=30"

垂直向上滾動:

./ffplay -i test.mp4 -vf drawtext="fontfile=arial.ttf:textfile=textfile.txt:x=(w-tw)/2:y=h-t*100:fontcolor=darkorange:fontsize=30"

注意:
./ffplay 是播放命令,當然可以用./ffmpeg,然后后面加上輸出文件名就可以

10.垂直拼接視頻

./ffmpeg -i test.mp4 -i output_vflip.mp4 -filter_complex [0][1]vstack -y output_vstack.mp4

vstack 是垂直拼接,輸出拼接結果
同理,水平拼接 hstack


好了,基本常用的命令就先介紹到這里了。

下一篇文章將介紹FFmpeg編譯,敬請期待~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,197評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,415評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,104評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,884評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,647評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,130評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,208評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,366評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,887評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,737評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,478評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,174評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,586評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,827評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,608評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,914評論 2 372

推薦閱讀更多精彩內容

  • 一、使用點播文件作為模擬直播源 ffmpeg.exe -re -stream_loop -1 -i 1280.mp...
    葉迎憲閱讀 1,942評論 0 1
  • FFmpeg 是一個專業的多媒體框架,能夠解碼、編碼、轉碼、復用、解復用、流式傳輸、過濾和播放幾乎所有格式的媒體文...
    rollingstarky閱讀 6,826評論 0 12
  • 分離視頻音頻流ffmpeg -i input_file -vcodec copy -an output_file_...
    nenhall閱讀 6,362評論 2 6
  • 推薦一個程序員開發、學習的好網站,www.it123.top 歡迎大家轉發收藏。 1. 視頻轉換 比如一個avi文...
    江上明月22閱讀 1,401評論 0 50
  • 【 ffmpeg 官網 】 補充些有用的參數:-write_empty_segments 1 視頻斷的-segm...
    _49_閱讀 3,009評論 0 0