ffmpeg 滤镜

概念

所谓的滤镜其实就是在原始的视频或者图像上增加filter

按照处理数据的类型,通常多媒体的 filter 分为:

⚫ 音频 filter

⚫ 视频 filter

⚫ 字幕 filter

另一种按照处于编解码器的位置划分:

⚫ prefilters: used before encoding

⚫ intrafilters: used while encoding (and are thus an integral part of a video codec)

⚫ postfilters: used after decoding

FFmpeg filter 分为:

⚫ source filter (只有输出)

⚫ audio filter

⚫ video filter

⚫ Multimedia filter

⚫ sink filter (只有输入)

除了 source 和 sink filter,其他 filter 都至少有一个输入、至少一个输出。

视频裁剪

将输入视频帧的宽度和高度从 x 和 y 值表示的位置裁剪到指定的宽度和高度;

x 和 y 是输出的左上角坐标,协调系统的中心是输入视频帧的左上角。

如果使用了可选的 keep_aspect 参数,将会改变输出 SAR(样本宽比)以补偿新的 DAR(显示长宽比)

语法:crop=ow[:oh[:x[:y[:keep_aspect]]]]

常见操作

(1)裁剪 100x100 的区域,起点为(12,34).

crop=100:100:12:34

相同效果:

crop=w=100:h=100:x=12:y=34

(2)裁剪中心区域,大小为 100x100

crop=100:100

(3)裁剪中心区域,大小为输入视频的 2/3

crop=2/3*in_w:2/3*in_h

(4)裁剪中心区域的正方形,高度为输入视频的高

crop=out_w=in_h

crop=in_h

(5)裁剪偏移左上角 100 像素

crop=in_w-100:in_h-100:100:100

(6)裁剪掉左右 10 像素,上下 20 像素

crop=in_w-2*10:in_h-2*20

(7)裁剪右下角区域

crop=in_w/2:in_h/2:in_w/2:in_h/2

添加水印

文字水印

(1)将文字的水印加在视频的左上角:

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':x=20:y=20"

字体的颜色设置为绿色

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world':fontcolor=green"

如果想调整文字水印显示的位置,调整 x 与 y 参数的数值即可。

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello

world':fontcolor=green:x=400:y=200"

修改透明度

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello

world':fontcolor=green:x=400:y=200:alpha=0.5"

(2)文字水印还可以增加一个框,然后给框加上背景颜色:

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello

world':fontcolor=green:box=1:boxcolor=yellow"

Version:0.9 StartHTML:0000000105 EndHTML:0000002877 StartFragment:0000000141 EndFragment:0000002837

(3)文字水印以本地时间作为水印内容

可以在 drawtext 滤镜中配合一些特殊用法来 完成,在 text 中显示本地当前时间,格式为年月日时分秒的方式,

ffplay -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow"

在使用 ffmpeg 转码存储到文件时需要加上-re,否则时间不对。

ffmpeg -re -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=green:box=1:boxcolor=yellow" out.mp4

Version:0.9 StartHTML:0000000105 EndHTML:0000003366 StartFragment:0000000141 EndFragment:0000003326

(4)在个别场景中,需要定时显示水印,定时不显示水印,这种方式同样可以配合 drawtext 滤镜进

行处理,使用 drawtext 与 enable 配合即可,例如每 3 秒钟显示一次文字水印:

ffplay -i input.mp4 -vf "drawtext=fontsize=60:fontfile=FreeSerif.ttf:text='test':fontcolor=green:box=1:boxcolor=yellow:enable=lt( mod(t\,3)\,1)"

在使用 ffmpeg 转码存储到文件时需要加上-re,否则时间不对。
Version:0.9 StartHTML:0000000105 EndHTML:0000002917 StartFragment:0000000141 EndFragment:0000002877

(5)跑马灯效果

ffplay -i input.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='helloworld':x=mod(100*t\,w):y=abs(sin(t))*h*0.7"

修改字体透明度,修改字体颜色

ffplay -i input.mp4 -vf "drawtext=fontsize=40:fontfile=FreeSerif.ttf:text='liaoqingfu':x=mod(50*t\,w):y=abs(sin(t))*h*0.7:alpha= 0.5:fontcolor=white:enable=lt(mod(t\,3)\,1)"

图片水印

FFmpeg 除了可以向视频添加文字水印之外,还可以向视频添加图片水印、视频跑马灯等

样例:

ffmpeg -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=10:y=10[out]"

output.mp4

➢ 原始视频文件路径:input.mp4

➢ 水印图片路径:logo.png

➢ 水印位置:(x,y)=(10,10)<=(left,top)距离左侧、顶部各 10 像素;

➢ 输出文件路径:output.mp4

(1)图片 logo.png 将会打入到 input.mp4 视频中,显示在 x 坐标 50、y 坐标 20 的位置

ffplay -i input.mp4 -vf "movie=logo.png[logo];[in][logo]overlay=50:10[out]"

由于 logo.png 图片的背景色是白色,所以显示起来比较生硬,如果水印图片是透明背景的,效果会更好,

下面找一张透明背景色的图片试一下:

ffplay -i input.mp4 -vf "movie=logo2.png[watermark];[in][watermark]overlay=50:10[out]"

(2)显示位置

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=10:10[out]"

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=main_w-overlay_w-10:10[out]"

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=10:main_h-overlay_h 10[out]"

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=main_w-overlay_w-10:main_hoverlay_h-10[out]"

(3)跑马灯效果

ffplay -i input.mp4 -vf "movie=logo.png[watermark];[in][watermark]overlay=x=mod(50*t\,main_w):y=abs(sin(t))*h*0.7[out]"

音视频ffmpeg——ffmpeg 滤镜(添加水印)相关推荐

  1. 音视频篇 - FFmpeg 的介绍和使用

    本文章是阅读<音视频开发进阶指南基于android与ios平台的实践>一书的学习笔记. 目录: FFmpeg 的介绍 FFmpeg Android 编译库 FFmpeg 的结构 FFmpe ...

  2. 音视频开发-ffmpeg介绍-系列一

    目录 一.简介 FFmpeg框架的基本组成包含: 二. FFmpeg框架梳理音视频的流程​编辑 基本概念: 三.ffmpeg.ffplay.ffprobe区别 4.1 ffmpeg是用于转码的应用程序 ...

  3. Android音视频开发--FFmpeg

    音视频的基础知识 视频 静止的画面叫图像(picture): 连续的图像变化每秒超过24帧(frame)画面以上时,根椐视觉暂留原理,人眼无法辨别每付单独的静态画面,看上去是平滑连续的视觉效果,这样的 ...

  4. 【音视频】FFmpeg

    FFmpeg 学习 FFmpeg FFmpeg简介 FFmpeg的基本组成 FFmpeg的可执行文件 ffmpeg 常用命令 FFmpeg转码 MP4格式 MP4概述 音视频文件音视频流抽取 H.26 ...

  5. 音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    前言 前一篇我们知道了如何配置FFmpeg开发环境,接下来,就开始简单的推流吧.说到推流前,我们要知道常用的几个直播推流协议. 直播推流协议 在搭建服务之前先了解下目前主流的几个直播协议: RTMP: ...

  6. 音视频同步-ffmpeg

    音视频同步肯定是需要使用时间戳进行同步的,音频和视频的时间戳进行对比,哪个小就写入哪个包,基本上可以实现音视频同步. 但是这个时间戳从哪里来呢? 使用rtp头中携带的时间戳是最正确的方法,因为音视频流 ...

  7. 音视频处理 ffmpeg初级开发 命令行工具-实用命令

    参考链接 ffmpeg Documentation 作者:smallest_one  链接:FFmpeg命令行工具-实用命令 - 简书 目录 1,help命令使用 1.1 ffmpeg命令的语法结构 ...

  8. php音视频同步,FFMPEG转码音视频不同步情况总结

    [导读]使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同步,下面我们就来根据问题出现的原因,对所遇到的音视频不同步做一个分类. 使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同 ...

  9. 音视频同步 ffmpeg 推流

    音视频同步原理及实现 可参考: https://blog.csdn.net/myvest/article/details/97416415 https://www.jianshu.com/p/3578 ...

  10. 音视频开发-FFmpeg详解

    音视频开发是个非常复杂的,庞大的开发话题,初涉其中,先看一下结合 OEIP(开源项目) 新增例子. 可以打开flv,mp4类型文件,以及rtmp协议音视频数据,声音的播放使用SDL. 把采集的麦/声卡 ...

最新文章

  1. 笔记本建立wifi热点!(主要针对XP)【直播】
  2. 记一次validator jar冲突导致的启动异常
  3. 【web安全】Spring Boot eureka xstream 反序列化
  4. Android中多媒体处理【转】
  5. MVP Community Camp 社区大课堂
  6. python坐标轴刻度设置_学习python中matplotlib绘图设置坐标轴刻度、文本
  7. [Redux/Mobx] redux-saga和redux-thunk有什么本质的区别?
  8. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统
  9. Cgroup 资源配置方法----------Control Groups------Docker通过 Cgroup 来控制容器使用的资源配额
  10. FileUpload上传过大文件异常
  11. 楼市泡沫雪崩为何十倍“猛于”A股大跌
  12. 深入浅出SQLITE3
  13. 七年级计算机上册知识题,Word综合应用复习七年级信息技术上册教案
  14. RK3288开发板GPIO介绍
  15. CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout
  16. 人工智能知识全面讲解:机器学习的类型
  17. ajax 获取数据
  18. 【转】独行巨蟹:BTS2.0那些事儿
  19. 五十岁:人生的另一种透彻
  20. MySQL之DML操作

热门文章

  1. 从零开始搭建仿抖音短视频APP--后端开发粉丝业务模块(1)
  2. Q1.ESX不能联网
  3. asp php时间格式,asp显示时间和日期
  4. 计算机的信息的表示教案,《信息的数字化表示》教学设计
  5. evo评估数据集与关键帧
  6. 基于PyQt5实现访问Web应用程序或网页
  7. 使用crm客户管理系统有四大好处
  8. chrome 主页被劫持,每天首次打开chrome都会进入2345的界面
  9. 如何生成你的专属推荐文案?智能文案在1688平台的应用...
  10. Mybatis的学习笔记