FFMpeg的基本用法
文章目錄
- 1 提取音視頻流
- 1.1 提取音頻流
- 1.2 提取視頻流
- 2 截取音視頻片段
- 3 合并音視頻
- 4 Libx265/Libxvid 重新編解碼
- 5 添加圖片水印
- 6 添加文字水印
- 6.1 添加靜態文字水印
- 6.2 文字跑馬燈效果
- 6.3 文字每隔M秒顯示N秒間隔顯示效果
- 7 FFmpeg音視頻特效處理
- 7.1 鏡面倒影特效vflip
- 7.2 裁剪指定區域 crop
- 7.3 畫中畫 overlay
1 提取音視頻流
1.1 提取音頻流
ffmpeg431.exe -i ande_302.mp4 -vn -acodec copy -f mp4 -y ande_302-vn.mp41.2 提取視頻流
ffmpeg431.exe -i ande_302.mp4 -an -vcodec copy -f mp4 -y ande_302-an.mp4選項詳解:
- -i : 指定的文件。
- -vn:video no。
- -an:audio no。
- -acodec:audio codec。
- -vcodec:video codec。
- -f:指定封裝格式。
- -y:直接覆蓋。
另外補充個關于1080P和720P的概念:
- 1080P: 1920x1080。
- 720P: 1280x720 。
2 截取音視頻片段
命令如下:
ffmpeg431.exe -i ande_302.mp4 -ss 10 -t 00:00:10 -c copy -f mp4 -y ande_302-ss10-t10.mp4// 技巧:-ss 放到-i 前頭,效率就會很高。 ffmpeg431.exe -ss 10 -i ande_302.mp4 -t 00:00:10 -c copy -f mp4 -y ande_302-ss10-t10.mp4參數詳解:
- -ss:start second。
- -t:time,截取多長時間。
- -c copy:直接復制,不經過重新編碼(這樣比較快)。
3 合并音視頻
命令如下:
ffmpeg431.exe -i ande_302-an.mp4 -i ande_302-vn.mp4 -c copy -f mp4 ande_302-newfull.mp4命令比較簡單,沒什么好解釋的。
4 Libx265/Libxvid 重新編解碼
Libxvid(iso+mpeg:mpeg1(vcd),2(dvd), 4(10:avc,h.264; 3:audio;4:video(xvid,vidx))
libmp3lame(iso,mpeg1, layer3)
libx264: itu(h.26x: 1,3,4,5),avc, AVC(H.264: libx264, openh264),advanced video coding
libx265: hevc(HEVC), high efficience video coding
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (libxvid))
Stream #0:1 -> #0:1 (aac (native) -> mp3 (libmp3lame))
5 添加圖片水印
-vf : video filter
命令如下:
ffmpeg431.exe -i ande_302.mp4 -vf "movie=head11.png[watermark2];[in][watermark2]overlay=100:150[out]" -vcodec libx264 -acodec aac -y ande_test_picwm2.mp4對于水印的位置還可以使用如下方式:
- main_w(視頻寬度), overlay_w(圖片寬度),main_h(視頻高度),overlay_h(圖片高度)
6 添加文字水印
6.1 添加靜態文字水印
ffmpeg431.exe -i ande_302.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello,ffmpeg':x=10:y=main_h-overlay_h-30:fontsize=35:fon tcolor=red" -f mp4 -y ande_test_text1.mp4ffmpeg431.exe -i ande_302.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello,ffmpeg':x=10:y=10:fontcolor=#FF6600" -f mp4 -y ande_test_text1.mp4字體文件: 同路徑。
文字:utf-8 編碼。
6.2 文字跑馬燈效果
drawtext 各個參數的含義詳解:
- line_h, lh:the height of each text line,時間線
- main_h, h, H:the input height,輸入視頻的高度:像素
- main_w, w, W:the input width,輸入視頻的寬度:像素
- n:the number of input frame, starting from 0,第幾幀
- rand(min, max):return a random number included between min and max,隨機數
- mod(a, b):求余,a%b,5%2==>: 1
- sar:The input sample aspect ratio,輸入采樣的寬高比,yuv,像素的寬高比
- t:timestamp expressed in seconds, NAN if the input timestamp is unknown,時間戳,單位:秒
- text_h, th:the height of the rendered text,文本的高度:像素
- text_w, tw:the width of the rendered text,文本的寬度:像素
左到右:
ffmpeg431.exe -i ande_302.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello, 您 好 ffmpeg':x=(mod(2*n\,w+tw)-tw):y=10:fontcolor=#FF6600:fontsize=60" -f mp4 -y ande_test_text3.mp4右到左:
ffmpeg431.exe -i ande_302.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello, 您 好 ffmpeg':x=w-t*w/10:y=10:fontcolor=#FF6600:fontsize=60" -f mp4 -y ande_test_text4.mp46.3 文字每隔M秒顯示N秒間隔顯示效果
ffmpeg431.exe -i ande_302.mp4 -vf "drawtext=fontfile=simhei.ttf:text='hello, 您 好 ffmpeg':x=main_w-tw-50:y=10:enable=lt(mod(t\,5)\,2):fontcolor=#FF6600:fontsize=60" -f mp4 -y ande_test_text10.mp4lt:letter than <
gt:greater than <
enable:可用
7 FFmpeg音視頻特效處理
7.1 鏡面倒影特效vflip
ffmpeg -i ande_302.mp4 -vf "split[up][down];[up]pad=iw:ih*2[up];[down]vflip[down];[up][down]overlay=0:h" -y output_vflip222.mp47.2 裁剪指定區域 crop
ffmpeg -i ande_302.mp4 -vf crop=400:400:0:0 -y ande_302-crop111.mp4
crop 的參數格式為 w:h: x:y,
- w、h 為輸出視頻的寬和高,
- x、y 標記輸入視頻中的某點,將該點作為基準點,向右下進行裁剪得到輸出視頻。
如果 x y 不寫的話,默認居中剪切。
7.3 畫中畫 overlay
ffmpeg -i ande_302.mp4 -i aabbaaAV-small.mp4 -filter_complex overlay=main_w-overlay_w-20:0 output_overlay333.mp4overlay 技術又稱視頻疊加技術。overlay 視頻技術使用非常廣泛,常見的例子有,電視
屏幕右上角顯示的電視臺臺標,以及畫中畫功能。
畫中畫是指在一個大的視頻播放窗口中還存在一個小播放窗口,兩個窗口不同的視頻內
容同時播放。
overlay 技術中涉及兩個窗口,通常把較大的窗口稱作背景窗口,較小的窗口稱作前景
窗口,背景窗口或前景窗口里都可以播放視頻或顯示圖片。FFmpeg 中使用 overlay 濾鏡可實現視頻疊加技術。
描述:前景窗口(第二輸入)覆蓋在背景窗口(第一輸入)的指定位置。
語法:overlay[=x:y[[:rgb={0, 1}]]
參數 x 和 y 是可選的,默認為 0。
參數 rgb 參數也是可選的,其值為 0 或 1,默認為 0。
參數說明:
- x 從左上角的水平坐標,默認值為 0
- y 從左上角的垂直坐標,默認值為 0
- rgb 值為 0 表示輸入顏色空間不改變,默認為 0;值為 1 表示將輸入的顏色空間設置為 RGB.
變量說明:如下變量可用在 x 和 y 的表達式中
- main_w 或 W 主輸入(背景窗口)寬度
- main_h 或 H 主輸入(背景窗口)高度
- overlay_w 或 w overlay 輸入(前景窗口)寬度
- overlay_h 或 h overlay 輸入(前景窗口)高度
總結
以上是生活随笔為你收集整理的FFMpeg的基本用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驱动设计的思想:面向对象/分层/分离
- 下一篇: offsetof宏和container_