网上大部分关于ffmpeg加视频水印的方法还是使用vhook,在现在的ffmpeg中已经不推荐使用,但是也能编译,也能使用,至于效果,一会再说。现在的ffmpeg推荐使用的是libavfilter,但是libavfilter的开发度较低,一直没有得到广泛应用。
先从官方网站下载了最新的FFmpeg 0.5.1版,./configure --help查看编译参数,很开心还有一项“--disable-vhook”存在,说明默认是有vhook的,怎想按如此方式编译完成之后测试结果令人失望。
在0.5.1版的ffmpeg下使用vhook方式为视频添加水印,按照网上常见的命令及参数,即 ffmpeg -i input.flv -vhook '/usr/lib/vhook/watermark.so -f watermark.png -t 222222 -m 1' output.flv ,执行完成之后画面效果相当差,似乎是锐化非常过度的那种感觉。以为是没加 -b 参数设置视频比特率的原因,结果设一个较高的比特率之后仍然没有改善,如此相比使用旧版本的vhook添加的水印实在差的不是一定半点了,结论是,在最新版ffmpeg中官方已经不推荐的vhook确实是没法使用了。
网上有种往libavfilter里加vf_logo.c的方法,试了一下,没搞出来,可能libavfilter的版本不同了吧。google后发现最新版的libavfilter里有一个vf_overlay.c用来添加水印,还支持透明水印,下面就开始svn版的ffmpeg + libavfilter之旅。
使用svn checkout出libavfilter,地址是svn://svn.ffmpeg.org/soc/libavfilter,进入libavfilter目录,执行./checkout.sh,svn版的ffmpeg将被checkout下来,并且该脚本执行的最后会将libavfilter下的svn源码复制到ffmpeg下相应目录,并且对checkout出的ffmpeg打上相应补丁Patch。
本人使用如下参数进行configure,而后便是 make && make install,想必无需赘述了。
./configure --prefix=/usr --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libmp3lame --enable-libvorbis --enable-libx264 --enable-libxvid --disable-ffplay --enable-shared --enable-libmp3lame --enable-gpl --enable-libfaad --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libx264 --enable-libtheora --enable-swscale --enable-libdc1394 --enable-nonfree --enable-avfilter --enable-libdirac --enable-libschroedinger --disable-mmx --enable-avfilter-lavf
要启用libavfilter,--enable-avfilter和--enable-avfilter-lavf这两项最为重要。./configure --help查看已经不见vhook相关参数的踪影了。而编译过程中报告找不到的各种库,要么通过apt源直接apt-get install安装,要么去sourceforge.net下载来默认编译安装,装全了就好。
本人使用的完整命令行如下,ffmpeg -y -i input.flv -acodec copy -b 300k -vfilters "movie=0:png:watermark.png [wm];[in][wm] overlay=5:5:1 [out]" output.flv 。
-y 表示有同名的output.flv存在时不提示,直接覆盖
-i input.flv 表示要进行水印添加处理的视频
-acodec copy 表示保持音频不变
-b 300k 表示处理视频的比特率,用-vcodec copy时报错,使用其他工具获取到原始视频比特率后加到这里,保持比特率基本不变,不然默认为200k,视频有损。
output.flv 处理后的视频
-vfilters "..." 中间便是水印处理参数,重要的是overlay=后面的部分,第一个参数表示水印距离视频左边的距离,第二个参数表示水印距离视频上边的距离,第三个参数为1,表示支持透明水印。使用透明的png图片进行视频编码后,成功获得带透明水印的视频,并且画质也比较好。
有一篇-vfilters参数使用的文章可供参考,其中还例举了如何同时加入2个水印到画面不同位置,http://www.techenigma.com/2010/05/ffmpeg-watermark-video-without-vhook-solution/。
待解问题:H264/x264编码的flv经过上述ffmpeg加水印处理后变成了H263编码,即普通的flv编码,可能处理参数加的不对或是不全,或者就应该对普通flv和H264/x264编码的视频分别处理,后续再进一步测试想办法解决。
转载自 http://blog.clzg.cn/?39357 ,由 www.k686.com 收集整理.
分享到:
相关推荐
java调用ffmpeg添加水印并且转换视频,代码中并没有判断哪些格式支持,那些不支持,mpg,mp4,avi,wmv基本都可以(传入格式),转换为flv avi mp4起码都没问题,其它的没事过ffmpeg是开源的支持的挺多的 补充:时间算错了,...
本教程将详细介绍如何使用FFmpeg为视频添加水印。 首先,我们需要了解FFmpeg的基本命令结构。FFmpeg的命令行格式通常如下: ``` ffmpeg -i 输入文件 -vf 滤镜选项 输出文件 ``` 在这个命令中,`-i` 参数指定输入...
这种方法的优点在于它提供了对水印添加的底层控制,但缺点是它需要更多的编程工作,且可能比使用内置滤镜更耗时。在实际应用中,除非有特殊需求,否则通常建议使用FFmpeg的滤镜系统,如`drawtext`或`movie`滤镜,...
个人关于ffmpeg中添加水印的命令以及详细说明
除了基本的水印添加,FFmpeg 还支持更复杂的操作,如动态水印、时间戳、文本水印等。通过深入学习 FFmpeg 的滤镜系统,你可以创建出更多个性化的视频效果。 总之,FFmpeg 是一个功能强大的工具,无论是专业开发者...
在这个“ffmpeg 视频格式转换 透明水印 demo”项目中,作者提供了一个Java程序,该程序利用FFmpeg库进行视频格式转换,并在转换过程中添加透明水印。下面将详细阐述FFmpeg在视频格式转换和添加水印方面的应用。 1. ...
在我们的例子中,关键的过滤器是`drawtext`,它可以将文本或图像作为水印添加到视频帧上。 添加水印的过程通常包括以下几个步骤: 1. **配置过滤器参数**:`drawtext`过滤器有许多参数,例如`text`(要显示的文本...
使用FFmpeg添加水印的操作方法如下: 1. 安装FFmpeg:首先,你需要下载并安装FFmpeg的最新版本,例如提供的压缩包文件"ffmpeg-git-1aeb88b-win32-static"。这个版本包含了FFmpeg的所有组件,适用于Windows系统。 2...
压缩包中的 `shared_ffmpeg` 文件可能是预编译的 FFmpeg 库或脚本,用于简化水印添加操作。具体使用方法可能需要查看该文件的文档或源代码,以了解如何调用和配置。 7. **实例应用**: 一个简单的添加水印的命令...
总之,这个项目展示了如何利用FFmpeg和SDL将时间戳水印添加到通过摄像头捕获的视频中,提供了一种实用的方法来增强视频的可读性和记录性。通过对FFmpeg的深入理解和实践,你可以创建更多自定义的视频处理功能,满足...
在FFmpeg中,`avfilter`是其滤镜系统的核心,允许用户对视频流进行各种复杂的操作,如添加水印、调整亮度、色彩平衡等。本示例将探讨如何使用FFmpeg添加水印,这是许多视频编辑任务中的一个常见需求。 首先,我们...
之前有人反馈之前上传的下载不了,我再次上传一次,如果有问题及时给我发邮件,或者可以关注一下我,给我发私信,咱们互相学习!(android端代码,FFmpeg实现为视频加水印, 邮箱:1213236113@qq.com)
在这个“ffmpeg视频水印,分片.zip”压缩包中,包含的是关于如何使用FFmpeg为视频添加水印以及进行视频分片的操作教程。下面将详细介绍这两个关键知识点。 一、FFmpeg视频水印 视频水印通常是为了保护版权或增加...
标题"ke_extramtr_ffmpeg_水印_"暗示我们将讨论FFmpeg在水印操作上的应用,而描述中提到的方法是通过Photoshop的阈值功能提取水印。 FFmpeg是一款跨平台的命令行工具,用于处理音频和视频文件,包括转换、编码、...
1. 加载图像:使用Image类的FromFile方法加载要添加水印的图片。 2. 创建Graphics对象:使用Graphics.FromImage方法从加载的图像创建Graphics对象,这将用于在图像上绘制。 3. 设置文本属性:通过Font类设置字体、...
`drawtext`滤镜允许你自定义文本内容、字体、颜色、位置等参数,而`movie`滤镜则可以从指定的图像文件中加载图片并将其作为水印添加到视频上。通过调整滤镜参数,可以灵活地控制水印的显示效果。 接下来,我们讨论...
FFMPEG采集摄像头图像数据 SDL图像渲染 avfilter库处理时间水印 MP4格式视频保存 Linux下FFMEPG应用
本程序使用FFmpeg的AVfilter实现了视频的水印叠加功能。可以将一张PNG图片作为水印叠加到视频上。 是最简单的FFmpeg的AVFilter方面的教程。适合FFmpeg的初学者。 1.1版本增加了多平台下编译的支持:Windows,MacOS,...