day09-----4-----FFmpeg filter补充之使用filter添加水印

其它过滤器文章:
day09-----1-----FFmpeg过滤器框架分析
day09-----2-----视频过滤器实战
day09-----3-----音频过滤器实战(ffmpeg进行混音,将两路音频pcm数据合成一路输出)
day09-----4-----FFmpeg filter补充之使用filter添加水印
day09-----5-----FFmpeg filter补充之使用复杂的filter过滤视频

注:看本节之前,请优先看day09-----5那节文章。

一 使用filter添加水印的流程

上一节9-2的视频裁剪以及9-3的音频混音都是使用简单的过滤,而本节与下一节9-5将使用复杂的过滤器去操作。所谓简单过滤,就是使用函数前连接,而复杂过滤则是通过filter的语法(共有3个语法,9-5将会讲到),去组成描述滤波图的字符串。

// 1 依次解码两张图片到各自的AVFrame。

// 2 初始化,类似简单过滤的过程,只不过使用字符串描述处理。

// 3 添加帧后,直接获取帧。

// 4 编码并保存编码后的水印图到jpg文件中。

其中描述滤波图的字符串为:

// 2 字符串描述过滤图。
// Parsed_xxx代表FFmpeg系统过滤器的个数。可用命令查看例如 ffmpeg -h filter=buffer。参数都有说明,例如pixel_aspect是样本长宽比
snprintf(filter_args, sizeof(filter_args),
         "buffer=video_size=%dx%d:pix_fmt=%d:time_base=1/25:pixel_aspect=%d/%d[main];"  // Parsed_buffer_0
         "buffer=video_size=%dx%d:pix_fmt=%d:time_base=1/25:pixel_aspect=%d/%d[logo];"  // Parsed_bufer_1
         "[main][logo]overlay=%d:%d[result];"                                           // Parsed_overlay_2
         "[result]buffersink",                                                          // Parsed_buffer_sink_3
         main_frame->width, main_frame->height, main_frame->format, main_frame->sample_aspect_ratio.num, main_frame->sample_aspect_ratio.den,
         logo_frame->width, logo_frame->height, logo_frame->format, logo_frame->sample_aspect_ratio.num, logo_frame->sample_aspect_ratio.den,
         x, y);

二 代码

关于代码,因为后续需要改动,赖得每次改完后这里还得改,就不贴自己的出来了。当然,我肯定是看自己的打上了注释的代码。

三 过滤效果

一张主图,一张水印图,处理完代码后,就是下图的效果。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值