ffmpeg 只绘制最后一个文本

Posted

技术标签:

【中文标题】ffmpeg 只绘制最后一个文本【英文标题】:ffmpeg only drawing last text 【发布时间】:2020-11-10 08:55:37 【问题描述】:

我正在使用flutter ffmpeg插件在flutter中使用ffmpeg。在进行试验时,我正在尝试这样做:在视频中显示 1 到 2 秒之间的文本和 3 到 4 秒之间的不同文本。

仅显示 3 到 4 秒之间提及的文本。所以对我来说只有最后一个 drawText 会起作用。我在这里错过了什么?

是生成的参数列表

 Running FFmpeg with arguments: [-y, -i, /storage/emulated/0/DCIM/Camera/20200707_234610.mp4, -i, /data/user/0/com.example.example/app_flutter/watermark.png, -filter_complex, [0:v][1:v]overlay=main_w-overlay_w-5:5 ,drawtext=fontfile='/data/user/0/com.example.example/app_flutter/font.ttf':fontsize=90:x=20:y=20:text='Testing':enable='between(t\,1\,2),drawtext=fontfile='/data/user/0/com.example.example/app_flutter/font.ttf':fontsize=90:x=20:y=260:text='OTHER TEXT':enable='between(t\,3\,4)'', -crf, 27, -preset, veryfast, -c:v, libx264, -r, 30, /data/user/0/com.example.example/cache/2020-07-21T07:50:39.206386.mp4]

【问题讨论】:

【参考方案1】:

您缺少单引号 ('):

'between(t\,1\,2),drawtext 更改为'between(t\,1\,2)',drawtext

您的过滤器图末尾还有一个额外的',但这不是问题的原因:

'between(t\,3\,4)'', -crf 更改为'between(t\,3\,4)', -crf

固定命令:

-y, -i, /storage/emulated/0/DCIM/Camera/20200707_234610.mp4, -i, /data/user/0/com.example.example/app_flutter/watermark.png, -filter_complex, [0:v][1:v]overlay=main_w-overlay_w-5:5,drawtext=fontfile='/data/user/0/com.example.example/app_flutter/font.ttf':fontsize=90:x=20:y=20:text='Testing':enable='between(t\,1\,2)',drawtext=fontfile='/data/user/0/com.example.example/app_flutter/font.ttf':fontsize=90:x=20:y=260:text='OTHER TEXT':enable='between(t\,3\,4)', -crf, 27, -preset, veryfast, -c:v, libx264, -r, 30, /data/user/0/com.example.example/cache/2020-07-21T07:50:39.206386.mp4

【讨论】:

【参考方案2】:

正如 llogan 所说,您缺少单引号 (')...但它后来也出现了。

'between(t\,1\,2),drawtext 都更改为'between(t\,1\,2)',drawtext AND

'between(t\,3\,4)'''between(t\,3\,4)'

【讨论】:

以上是关于ffmpeg 只绘制最后一个文本的主要内容,如果未能解决你的问题,请参考以下文章

在 Imagemagick 中创建的透明 PNG 在 FFMPEG 中绘制为不透明

JTable-在单元格中绘制内容(文本)

MPAndroidChart - 如何在最后一个条目中绘制圆圈?

使用 PIL 绘制多语言文本

使用复合可绘制对象在 TextView 中设置实际文本填充

OpenGL中的绘制顺序