没有这样的过滤器:'drawtext'。

9

我的主要目标是收集用户输入并将其转换为黑色背景的视频,然后在视频播放时,输入文本将从左到右移动,并带有背景音频。

目前我被建议使用“drawtext”,但我发现它无法正常工作。

我的命令:

ffmpeg -i test.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" textover7.mpg -report
ffmpeg version git-2017-12-28-be4dfbf Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-18)
  configuration: --prefix=/usr/local/ffmpeg --extra-cflags=-I/usr/local/ffmpeg/include --extra-ldflags=-L/usr/local/ffmpeg/lib --bindir=/usr/local/bin --enable-gpl --enable-nonfree --enable-libfdk_aac --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libtheora --enable-filter=drawtext
  libavutil      56.  7.100 / 56.  7.100
  libavcodec     58.  9.100 / 58.  9.100
  libavformat    58.  3.100 / 58.  3.100
  libavdevice    58.  0.100 / 58.  0.100
  libavfilter     7.  8.100 /  7.  8.100
  libswscale      5.  0.101 /  5.  0.101
  libswresample   3.  0.101 /  3.  0.101
  libpostproc    55.  0.100 / 55.  0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2014-01-19T03:12:30.000000Z
  Duration: 00:07:15.00, start: 0.000000, bitrate: 201 kb/s
    Stream #0:0(und), 8, 1/30: Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 640x360, 103 kb/s, 15 fps, 15 tbr, 30 tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und), 1, 1/44100: Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)
    Metadata:
      creation_time   : 2014-01-19T03:12:31.000000Z
      handler_name    : IsoMedia File Produced by Google, 5-11-2011
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mpeg1video (native))
  Stream #0:1 -> #0:1 (aac (native) -> mp2 (native))
Press [q] to stop, [?] for help
[AVFilterGraph @ 0x466e4c0] No such filter: 'drawtext'
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!

好的,你能简要介绍一下这个的ffmpeg语法吗?谢谢。 - Femzy
我一直在运行的所有脚本,它们都输出大小为0KB的视频文件,无法播放。请帮忙解决这个问题。以下是我的一些脚本:echo shell_exec('ffmpeg -i test.mp4 -vf drawtext="enable=gte(t,3):fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" textover5.mpg'); - Femzy
libswscale 5. 0.101 / 5. 0.101 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 正在分离命令行。 读取选项“-f”... 匹配选项“f”(强制格式)和参数“test.mp4”。 读取选项“-vf”... 匹配选项“vf”(设置视频过滤器)和参数“drawtext=fontsize=64:fontcolor=white@0.8:box=1:boxcolor=black@0.75:boxborderw=16:fontfile=OCRA.ttf:text=my_video:x=(w-tw)/2:y=th”。 读取选项“textover09.mpg”... 匹配输出URL。 读取选项“-report”... - Femzy
匹配选项“report”(生成报告)并带有参数“1”。 完成命令行拆分。 解析全局选项组。 应用选项“report”(生成报告)并带有参数1。 成功解析选项组。 解析选项组:输出URL textover09.mpg。 应用选项f(强制格式)并带有参数test.mp4。 应用选项vf(设置视频过滤器)并带有参数。 - Femzy
不要试图把所有信息都塞进注释里,你应该编辑你的问题并包含新的信息:这样也更容易阅读。一旦你这样做了,我就会看一下。然后你可以删除所有这些额外的注释。你应该尽量避免使用尾随选项(即在最后一个输出文件之后声明的选项),因为通常 ffmpeg 可能会忽略它们。 - llogan
显示剩余14条评论
3个回答

9
您的ffmpeg不支持drawtext滤镜,这需要配置选项--enable-libfreetype才能使用。请下载已集成支持的版本:

非常感谢您,我按照https://trac.ffmpeg.org/wiki/CompilationGuide/Centos上的指示完成了编译。现在,我想像您说的那样在我的脚本中执行新的ffmpeg,我该怎么做呢?非常感谢。 - Femzy
@Femzy 你试过用新的ffmpeg运行你的脚本了吗? - llogan
没有,我还没有尝试过。我想尝试一下,但是我不知道是否应该使用之前用过的相同命令。 - Femzy
我将包安装到了public_html文件夹中,我将文件夹命名为ffmpeg_sources。那么现在我该如何使用它来替换之前使用的那个呢? - Femzy
@Femzy 请提供二进制文件的完整路径 echo shell_exec('/path/to/ffmpeg ... - llogan
显示剩余8条评论

7

drawtext 出现错误可能是因为您的FFmpeg没有编译libfreetype。

Mac OS 的解决方法:

# If ffmpeg is already installed, you need to uninstall it.
brew uninstall --ignore-dependencies ffmpeg

# you may very well want to specify other options
brew install ffmpeg --with-freetype

3
卸载后运行 brew install ffmpeg --with-freetype 后,我收到了这个错误:Error: invalid option: --with-freetype - omega1

0

我在使用以下参数编译ffmpeg时遇到了这个问题: --enable-libfreetype --enable-filter=drawtext 通过安装libfreetype6-dev解决了我的问题。


除非您手动禁用过滤器,否则无需使用“--enable-filter=drawtext”。 - llogan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接