FFMpeg的基本用法

1 提取音视频流

1.1 提取音频流

ffmpeg431.exe -i ande_302.mp4 -vn -acodec copy -f mp4 -y ande_302-vn.mp4

1.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

ffmpeg431.exe -i ande_302.mp4 -acodec libmp3lame -vcodec libxvid -f mp4
ande_302-xvid-mp3.mp4
ffmpeg431.exe -i ande_302.mp4 -acodec libmp3lame -vcodec libx265 -f mp4
ande_302-xvid-mp3.mp4

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(图片高度)
ffmpeg431.exe -i ande_302.mp4 -vf
"movie=head11.png[watermark1];[in][watermark1]overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]" -vcodec libx264 -acodec aac -y ande_test_picwm4.mp4

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.mp4

ffmpeg431.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.mp4

6.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.mp4

lt: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.mp4

7.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.mp4

overlay 技术又称视频叠加技术。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 输入(前景窗口)高度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值