我的平台:Ubuntu 10.10 + FFMPEG 0.5.3(我从源代码安装了 ffmpeg)
我尝试使用 FFMPEG 0.5.3 为 .MOV 视频添加水印imlib2.so
(请注意 FFMPEG 0.6+ 不支持imlib2.so
,因此我使用 ffmpeg 0.5.3)
这是我的代码:
ffmpeg -sameq -i example.mov -vhook '/usr/local/lib/vhook/imlib2.so -x 0 -y 0 -i /var/www/files/watermark.png' newexample.mov
输出如下:
FFmpeg version 0.5.3, Copyright (c) 2000-2009 Fabrice Bellard, et al.
configuration: --enable-avfilter --enable-filter=movie --enable-avfilter-lavf
libavutil 49.15. 0 / 49.15. 0
libavcodec 52.20. 1 / 52.20. 1
libavformat 52.31. 0 / 52.31. 0
libavdevice 52. 1. 0 / 52. 1. 0
libavfilter 0. 4. 0 / 0. 4. 0
built on Jul 3 2011 12:05:08, gcc: 4.4.5
Seems stream 1 codec frame rate differs from container frame rate: 59.94 (5994/100) -> 29.97 (30000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'example.mov':
Duration: 00:03:14.06, start: 0.000000, bitrate: 3350 kb/s
Stream #0.0(eng): Audio: aac, 48000 Hz, stereo, s16
Stream #0.1(eng): Video: h264, yuv420p, 1150x647, 29.97 tbr, 29.97 tbn, 59.94 tbc
Output #0, mov, to 'newexample.mov':
Stream #0.0(eng): Video: mpeg4, yuv420p, 1150x647, q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
Stream #0.1(eng): Audio: 0x0000, 48000 Hz, stereo, s16, 64 kb/s
Stream mapping:
Stream #0.1 -> #0.0
Stream #0.0 -> #0.1
Unsupported codec for output stream #0.1
可能存在什么问题?是不支持 AAC 还是 H264?
我安装了 libavcodec-extra-52、linfaac、libfaad 等,但错误是一样的。
我必须按照此说明进行安装吗?如何安装并使用最新的 FFmpeg 和 x264或者有更简单的解决方案?
答案1
使用最新的 ffmpeg 执行此操作的正确方法是使用覆盖滤镜。以下命令将放置watermark.png
在水印的顶部input.mp4
,水印的左上角位于主视频左上角右侧十五个像素处,下方十个像素处:
ffmpeg -i input.mp4 -i watermark.png -filter_complex \
'[0:v][1:v]overlay=15:10[outv]' -map [outv] -map [0:a] \
-c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4
显然,将 15 或 10 更改为您想要的任何值。
如果您要在具有不同分辨率的多个视频上添加水印,您可能还会发现一些有用的常量:
- W 和 H 分别是主视频的宽度和高度(
input.mp4
) - w 和 h 分别是叠加视频的宽度和高度(
watermark.png
)
这些可以派上用场。例如,要将水印置于视频的中心,您可以使用:
'[0:v][1:v]overlay=(W-w)/2:(H-h)/2[outv]'
类似地,要将水印置于视频左上角六分之一处的中央:
'[0:v][1:v]overlay=(W-w)/6:(H-h)/6[outv]'
对于视频左下角的六分之一:
'[0:v][1:v]overlay=(W-w)/6:(H-h)/(6/5)[outv]'
你几乎可以做任何你需要做的事情。
查看覆盖过滤器文档以获取更多信息。