【问题标题】:ffmpeg output Filename from multiple sourceffmpeg 来自多个源的输出文件名
【发布时间】:2019-10-07 18:01:17
【问题描述】:

我希望输出文件与源文件具有相同的名称(例如来自list.txt 的第一个文件名),我该怎么做?

这是我的代码,它将文件夹中的所有 .avi 转换为单个文件并将其重命名为 output.avi

我希望文件名与源文件夹中的第一个文件名或list.txt 中的第一个文件名相同,而不是 output.avi

for %%f in (*.avi) do (
    echo file %%f >> list.txt
)
ffmpeg -f concat -safe 0 -i list.txt -c copy output.avi
del list.txt

我还想知道一件事,是否可以在不重新编码的情况下将视频水平翻转或镜像?

【问题讨论】:

  • 每个帖子只能问一个问题。多问题帖子往往会被忽略或得到部分答案,而这些答案通常不会被接受。

标签: batch-file ffmpeg


【解决方案1】:

我认为 ffmpeg 不支持“反向引用”输入文件名。我建议在 bash 中或通过其他脚本编写方式来处理它。例如。您可以像这样使用list.txt 的第一行作为输出文件名(未经测试):

ffmpeg -f concat -i list.txt -c copy output/$(head -1 list.txt)

在本例中,如果第一行是foo.avi,则输出将保存在output/foo.avi

是否可以在不重新编码的情况下水平翻转视频或镜像视频

显然您可以set rotation metadata 无需重新编码来提示视频播放器以给定的旋转播放它。也许有用于镜像或​​翻转的元数据标志,但我找不到。

如果这对您不起作用,我认为没有内置解决方案可以在不重新编码的情况下执行此操作。

【讨论】:

    【解决方案2】:

    是否可以在不重新编码的情况下将视频水平翻转或镜像?

    不,在使用过滤器(例如 hflip、vflip、rotate 等)时不会。过滤需要重新编码。

    另一个答案中提到的旋转元数据可能足以满足此用例,但玩家之间的支持并不普遍。没有用于镜像或​​翻转的元数据:只有旋转。

    如果这不可接受,则播放器本身可能具有镜像/翻转功能。示例:

    mpv -vf hflip video.mp4
    

    【讨论】:

      猜你喜欢
      • 2019-02-03
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      相关资源
      最近更新 更多