ffmpeg - 使用ffmpeg同时将图像序列转换为视频和叠加
问题描述
我想降低程序的计算复杂度以加快处理速度。但是,我不确定是否有任何方法可以将图像序列到视频的过程结合到一个过程中?
我已经实现的东西是以这种方式连续的,1)图像序列被转换为视频 2)下一个覆盖的过程发生。
所有工作都按预期进行,但完成第 1 次和第 2 次操作需要很长时间。因此,我正在寻找结合这两个操作。
第一次操作
"-y -f concat -safe 0 -i {0} -vsync vfr -vf \"fps={1},format=yuv420p\" {2}"
第一个代码
string cmd = String.Format("-y -f concat -safe 0 -i {0} -vsync vfr -vf \"fps={1},format=yuv420p\" {2}"
, frameList, frame_rate, output_file);
第二次手术
-y -i {0} -i {1} -max_muxing_queue_size 1024 -filter_complex \"{2}{3}\" {4} {5} -c:a copy {6}
第二代码
string setpts = String.Format("[1:v]setpts=PTS-{0}/TB[a];", 0);
//{0}:{1} position
string overlay = String.Format("[0:v][a]overlay={0}:{1}:enable=gte(t\\,{2}):eof_action=pass,format=yuv420p[out]", Program.FrameWidth - (480+25), 25, overlay_delay);
string map = "-map \"[out]\" -map 0:a?";
string pix_fmt = "";
string cmd = String.Format("-y -i {0} -i {1} -max_muxing_queue_size 1024 -filter_complex \"{2}{3}\" {4} {5} -c:a copy {6}"
, output_file, video_path, setpts, overlay, map, pix_fmt, output_file.Replace(".mp4", "_overlay_cam.mp4"));
我很感激你的帮助。
解决方案
利用
string setpts = String.Format("[1:v]setpts=PTS-{0}/TB[a];", 0);
string fps = String.Format("[0:v]fps={0}[i];", frame_rate);
//{0}:{1} position
string overlay = String.Format("[i][a]overlay={0}:{1}:enable=gte(t\\,{2}):eof_action=pass,format=yuv420p[out]", Program.FrameWidth - (480+25), 25, overlay_delay);
string map = "-map \"[out]\" -map 0:a?";
string pix_fmt = "";
string cmd = String.Format("-y -f concat -safe 0 -i {0} -i {1} -filter_complex \"{2}{3}{4}\" {5} {6} -c:a copy -max_muxing_queue_size 1024 {7}"
, frameList, video_path, fps, setpts, overlay, map, pix_fmt, output_file.Replace(".mp4", "_overlay_cam.mp4"));
fps 过滤器在用于叠加之前对图像执行。覆盖过滤器被调整为使用 fps 过滤器的输出。其余一切保持不变。
推荐阅读
- tsql - T-SQL:如何查找和替换字符串模式
- c# - Rest API:为 POST 方法和 ID 集合设计 URL 和正文
- kotlin - 无法从路径中检索查询参数:Vertx 中的“xxx/:id?version=:version”
- python - dd.read_csv - FileNotFoundError: [WinError 3] - UNC 路径
- parameters - 如何获取参数值并将其插入查询 SAP ABAP
- linux - 如何将 linux 命令作为命令行参数传递给 bash 执行?
- javascript - 如何扩展 GraphQL 调用的上下文对象?
- javascript - 在 JavaScript 或 Typescript 中按 ID 搜索和计算两个数组中的匹配项
- c# - 如何在转换为 int32 时使类变量等于我的文本框值
- ios - Url_Launcher 在 iOS 上打开任何地图应用程序