首页| 论坛| 消息

标题:Qt音视频开发47-文字和图片水印(可存储到MP4中)
作者:liudianwu
日期:2023-07-17 13:44
内容:

## 一、前言
近期花了两周时间闭门啃硬骨头,主要就解决三个问题(音视频同步存储和推流、图片水印并将水印信息存储到文件或者推流、rtsp推流),这三个问题困扰了很多年,以至于找遍了网络和翻遍ffplay代码以及ffmpeg示例的代码,通过不下于上百次方案的调整和测试,几乎每次都是在接近崩溃的时候,灵机一动就成了,能存储成功基本上就能推流成功,毕竟推流就是将存储的文件地址改成推流地址就行。
在ffmpeg中除了编解码以外,滤镜应该就是第二强大的功能,纵观现在市面上各种视频处理软件中的特效,几乎都是底层用ffmpeg去处理的,因为ffmpeg中的滤镜处理可以从源头上解决问题,他可以直接应用好特效后更改帧数据,这样收到的帧就已经是带了特效的帧,意味着保存的时候也就是带了水印和特效的帧,当然滤镜越多占用CPU越高,一般不建议过多的特效,比如文字水印控制在4个,图片水印控制在2个,其中文字水印支持换行显示,对标vlc和mpv中的水印,也是固定支持2-4路,超过了也没有。
很早以前就把ffmpeg中的文字水印搞定了,包括了各种方框图形、模糊滤镜等,唯独图片滤镜没搞定,单独用movie滤镜设置一个图片水印是可以的,但是和文字水印以及其他水印一组合,就歇菜了,导致所有水印失效,在avfilter_graph_parse_ptr会报错,其他的滤镜只需要将滤镜内容用逗号隔开就行,而图片滤镜就是不行,后面想着是不是要创建多个avfilter中的in来处理,也不行,而且也有点多余,查阅了各种资料,尤其是官网的信息,终于找到问题所在,原来一旦加了图片滤镜,整个滤镜字符串的格式和排列就需要做特殊调整,而且貌似顺序有要求,必须是其他各种滤镜字符串组合在前面,图片滤镜在最后面。

## 二、效果图

## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_demo。
## 四、功能特点
### 4.1 基础功能
1. 支持各种音频视频文件格式,比如mp3、 ..

回复 发表
主题 版块