【发布时间】:2019-04-12 16:04:22
【问题描述】:
我有一个命令,可以将叠加图像放在视频上。 之后,我调整输出大小以适合某些尺寸。
通常一切正常,但有时且仅在某台台式计算机上,当第二次精化开始时,命令返回错误:moov atom not found
让我们写一些代码:
我的第一个命令很长,我只是用 2 张图片示例过去了重要的东西:
-i inputVideo.mp4 -i 1.jpg -i 2.jpg
-filter_complex "[1:v]format=yuva422p,[Other effects...][im1];
[2:v]format=yuva422p,[Other effects...][im2];
[0][im1]overlay=(main_w-overlay_w)/2:(main_h - overlay_h)/2[o1];
[o1][im2]overlay=(main_w-overlay_w)/2:(main_h - overlay_h)/2"
-crf 18 -c:a copy output.mp4
我的第二条命令如下:
-i output.mp4 -crf 19 resized.mp4
我想我在第一个命令中遗漏了一些东西,但是什么? 如果我在便携式计算机上执行完全相同的代码,它就可以正常工作。
感谢您的帮助!
这是两个日志ffmpeg logs的链接
最后一次编辑(我希望):)
我在那个 github 存储库中添加了我尝试过的 ffmpeg 命令和重现问题的源文件。我希望有人能找到解决方案
在存储库中有:
- LAST_CommandLine_Command -> 这是我正在运行的 ffmpeg 命令
- LAST_CommandLine_Command_Output -> 这是我的 ffmpeg 的运行输出之一(这是我尝试过的最后一个)
- 文件从 01.jpg 到 10.jpg -> 这些是我用命令覆盖在视频上的图片
- My input video 用于 ffmpeg 命令。
我尝试使用以下命令运行此命令: - 为我运行它的 Windows 控制台应用程序 - 直接从命令行 - 使用命令行 dotnet myapplication.dll(不是从调试运行我的应用程序,而是从发布运行)
结果:
对于这些特定文件,它在 10 次中工作了 1 次,在其他情况下,它会在几秒钟后随机停止(从 45 英寸到 1 英寸 55 英寸,具体取决于运行)。
注意:我尝试使用 -threads 1、-threads 2 并且没有任何线程限制。在所有情况下都失败了
【问题讨论】:
-
为什么要重新编码
output.mp4,而不是在原始命令中重新调整大小? -
文件创建方法需要查看日志
-
@llogan 我这样做是因为我需要将视频调整到某个 Mb 尺寸,并且我没有找到任何“单行”命令来执行此操作,所以我尝试递归缩放视频直到它适合所需的尺寸。有没有更快的方法来实现它?
-
日志文件被截断。
-
@Gyan 缺少的行仅是框架细化的行;我删除了它们,因为答案会很长。我会在顶部添加一些行,在最后添加一些,但我不能全部添加
标签: ffmpeg