【问题标题】:No such filter: 'drawtext'没有这样的过滤器:'drawtext'
【发布时间】:2017-12-28 11:42:34
【问题描述】:

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

目前有人建议我使用“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!

【问题讨论】:

  • 谢谢LordNeckbeard,但它没有显示任何错误消息,除了我如何让它在我的php脚本中显示错误之外,请记住我在PHP而不是Windows命令行上运行它..什么我想可能是我的问题是我可能不知道该命令使用的正确语法可能有一些地方我想使用双引号或单引号。我会很高兴得到这里的解决方案提前谢谢
  • 我不是 PHP 用户,所以我不确定你需要做什么才能从 ffmpeg 命令中获取输出,但你可以在你的 ffmpeg 命令中添加-report 选项它会在工作目录中输出一个非常详细的日志文件(假设您的 ffmpeg 命令甚至正在执行)。
  • 好的,谢谢,我可以看到你对 ffmpeg 很好。我在这个项目中的主要目标是创建一个网站,让我的用户使用他们撰写的原始文章和视频配音创建视​​频。视频将有背景,书面文章将从右向左移动,并播放音频。我被认为 ffmpeg 可以处理这些事情,这就是我选择它的原因。请根据您使用 ffmpeg 的经验,我可以完成这项工作吗?
  • 好的,你能简要介绍一下 ffmpeg 的语法吗?谢谢
  • 我一直在运行的所有脚本,它们都输出大小为 0kb 的视频文件,它不会播放。请帮我解决这个问题这是我的一些脚本 echo shell_exec('ffmpeg -我 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');

标签: video ffmpeg


【解决方案1】:

您的ffmpeg 不支持drawtext filter。它缺少此过滤器所需的配置选项--enable-libfreetype

下载包含支持的构建:

【讨论】:

  • 非常感谢先生,我按照trac.ffmpeg.org/wiki/CompilationGuide/Centos Nw 上的说明完成了编译,我想按照你说的在我的脚本中执行新的 ffmpeg,我该怎么做.. 非常感谢很多
  • @Femzy 您是否使用新的 ffmpeg 尝试了您的脚本?
  • 不,我没有尝试过,我想尝试,但我不知道我是否应该使用与前一个相同的命令
  • 我将包安装到我的 public_html 文件夹中,我将文件夹命名为 ffmpeg_sources。那么现在我该如何使用它而不是我之前使用的那个
  • @Femzy 提供二进制文件echo shell_exec('/path/to/ffmpeg ...的完整路径
【解决方案2】:

drawtext 的错误发生在您的 ffmpeg 编译时没有 libfreetype。

mac 操作系统解决方案:

# 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

【讨论】:

  • 卸载并运行brew install ffmpeg --with-freetype后我得到了这个Error: invalid option: --with-freetype
【解决方案3】:

在编译 ffmpeg 时我也遇到了这个问题 --enable-libfreetype --enable-filter=drawtext 标志。 安装 libfreetype6-dev 解决了我的问题。

【讨论】:

  • 不需要--enable-filter=drawtext,除非您手动禁用过滤器。
猜你喜欢
  • 2016-03-12
  • 1970-01-01
  • 2019-07-15
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 2020-04-09
  • 1970-01-01
  • 2016-12-19
相关资源
最近更新 更多