【问题标题】:ffmpeg & png watermark issueffmpeg & png 水印问题
【发布时间】:2012-06-17 22:38:48
【问题描述】:

我尝试在这样的视频上创建水印(使用png 图像):

ffmpeg -i test.wmv -b:a 300k -ar 22050 -t 10 -f flv -s 352x288 -vf "movie = watermark_logo352.png [watermark]; [in][watermark] overlay =0:0 [out]" out.flv

但我得到了错误:

ffmpeg version 0.10.4 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 14 2012 13:14:31 with gcc 4.4.5   configuration:
--prefix=/home/username --enable-cross-compile --enable-shared --arch=amd64 --target-os=linux --disable-yasm --enable-decoder=png --enable-encoder=png   
        libavutil      51. 35.100 / 51. 35.100   
        libavcodec     53. 61.100 / 53. 61.100   
        libavformat    53. 32.100 / 53. 32.100   
        libavdevice    53.  4.100 / 53.  4.100   
        libavfilter     2. 61.100 /  2. 61.100   
        libswscale      2.  1.100 /  2.  1.100   
        libswresample   0.  6.100 /  0.  6.100 
        Input #0, asf, from 'test.wmv':   
        Metadata:
            >     WMFSDKVersion   : 9.00.00.2980
            >     WMFSDKNeeded    : 0.0.0.0000
            >     IsVBR           : 1
            >     VBR Peak        : 351
            >     Buffer Average  : 728   Duration: 00:00:05.59, start: 0.000000, bitrate: 574 kb/s
            >     Stream #0:0(jpn): Audio: wmav2 (a[1][0][0] / 0x0161), 22050 Hz, 2 channels, s16, 32 kb/s
            >     Stream #0:1(jpn): Video: wmv1 (WMV1 / 0x31564D57), yuv420p, 352x288, 520 kb/s, SAR 8:9 DAR 88:81, 29.97 tbr, 1k tbn, 1k tbc File
            > 'out2.flv' already exists. Overwrite ? [y/N] y w:352 h:288
            > pixfmt:yuv420p tb:1/1000000 sar:8/9 sws_param: 
    [image2 @ 0x551f880] decoding for stream 0 failed 
    [image2 @ 0x551f880] Could not find codec parameters (Video: png) 
    [movie @ 0x551f440] Failed to find stream info
    [movie @ 0x551f440] Failed to find any codec 
    Error initializing filter 'movie' with args 'watermark_logo352.png' 
    Error opening filters!

当我使用jpg 时,它就像一个魅力。

我在 Debian 6 Squeeze 上使用 ffmpeg v 0.10.4。 任何帮助将不胜感激。

编辑

问题比我想象的要简单。如果我将 ffmpeg -i 与任何 png 图像一起使用,我会收到类似的错误:

  libavutil      51. 35.100 / 51. 35.100
  libavcodec     53. 61.100 / 53. 61.100
  libavformat    53. 32.100 / 53. 32.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
[image2 @ 0xc8b73a0] decoding for stream 0 failed
[image2 @ 0xc8b73a0] Could not find codec parameters (Video: png)
watermark.png: could not find codec parameters

【问题讨论】:

  • 请提供您的命令产生的完整 ffmpeg 控制台输出。此外,大多数 ffmpeg 使用问题更适合 superuser.com。
  • 感谢您更新帖子。 png是如何创建的?是否可以共享或上传示例文件?另外,ffmpeg -codecs | grep png 的输出是什么?
  • 它没有显示任何内容。如何使用 png 支持进行编译?我在另一个安装中使用了相同的 png,它工作正常。

标签: ffmpeg png


【解决方案1】:

您的编译似乎没有 zlib 支持,这是 PNG 解码和编码的要求(请参阅 FFmpeg configure 文件的代码以查看其他要求)。

对于 Debian/Ubuntu,这意味着您需要 zlib1g-dev,或者对于 CentOS zlib-devel,作为构建依赖项并重新编译 FFmpeg。 FFmpeg 会自动检测到,所以你不需要添加额外的./configure 参数,也就是说你也可以省略--enable-decoder=png --enable-encoder=png

FFmpeg Wiki 上查看各种FFmpeg compile guides,或直接查看download a build of ffmpeg

【讨论】:

    【解决方案2】:

    [wm] 替换[watermark],它就像一个魅力。 我用这个:

    -vf "movie=0:png:./watermark.png [wm];[in][wm] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]"
    

    (用于右下水印)

    【讨论】:

    • 链接标签的名称一般无所谓,不需要movie多媒体源过滤器:ffmpeg -i input1 -i input2 -filter_complex "[0:v][1:v]overlay" output
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多