php - ffmpeg 奇怪的错误变量/未定义的常量
问题描述
我试图实现获得动画文本覆盖。我找到了这个线程: ffmpeg移动文本drawtext
但是,当我运行此代码时:
ffmpeg -i VideoInput.mp4 \
-vf "drawtext=enable='between(t,12,15)':fontfile=myfont.otf:text='Test test': \
x='if(lt(t-t2+1\,0)\,x1+(x2-x1)*(t-t1)/(t2-t1-1)\,x)': \
y='if(lt(t-t2+1\,0)\,y1+(y2-y1)*(t-t1)/(t2-t1-1)\,y)':fontsize=65" \
-acodec copy outputVideo.mp4
我得到错误:
[Parsed_drawtext_0 @ 000002d862595c00][Eval @ 000000e1d79fe300] Undefined constant or missing '(' in 't2-t1-1),x)'
[Parsed_drawtext_0 @ 000002d862595c00] Failed to configure input pad on Parsed_drawtext_0
第二个奇怪的错误,这可能是顶部问题的原因。是我不能在多行上运行参数。因此,使用下面的代码,我必须删除斜杠并将其放在 1 行。我使用 PHP,所以这不起作用(白屏,无输出)
$arguments = "-i out1.mp4 \
-vf \"drawtext=enable='between(t,12,15)':fontfile=myfont.otf:text='Test test': \
x='if(lt(t-t2+1\,0)\,x1+(x2-x1)*(t-t1)/(t2-t1-1)\,x)': \
y='if(lt(t-t2+1\,0)\,y1+(y2-y1)*(t-t1)/(t2-t1-1)\,y)':fontsize=65\" \
-acodec copy outputVideo.mp4 2>&1";
$output = shell_exec('D:/wamp64/www/createslideshow/ffmpeg-20190319-f8075b2-win64-static/bin/ffmpeg.exe '.$arguments);
这有效,但给出了未定义的常量错误:
$arguments = "-i out1.mp4 -vf \"drawtext=enable='between(t,12,15)':fontfile=myfont.otf:text='Test test': x='if(lt(t-t2+1\,0)\,x1+(x2-x1)*(t-t1)/(t2-t1-1)\,x)': y='if(lt(t-t2+1\,0)\,y1+(y2-y1)*(t-t1)/(t2-t1-1)\,y)':fontsize=65\" -acodec copy outputVideo.mp4 2>&1";
$output = shell_exec('D:/wamp64/www/createslideshow/ffmpeg-20190319-f8075b2-win64-static/bin/ffmpeg.exe '.$arguments);
解决方案
推荐阅读
- php - 接收:“未找到名称为“imageAdd”的路由”用于定义的路由
- r - Scale-Free graph,访问图的顶点
- azure - Azure WebApp 存储文件
- javascript - 从 Vue.js 指令返回变量
- php - 如何用这种数据格式化模板字符串?
- rest - Flask:对在 Rest API 中使用 PUT/POST 感到困惑
- c# - 非静态字段 VideoCapture.QueryFrame() 需要对象引用
- java - 类型名称选择 :: 返回值的函数的接口名称
- powershell - XML 到 CSV 数据导出
- laravel - Dockerfile 不会在 Laravel 中创建文件和文件夹