我想让输出文件具有与源相同的名称(例如list.txt
中的第一个文件名),该怎么办?
这是我拥有的代码,它将文件夹中的所有.avi转换为单个文件,并将其重命名为output.avi
。
我希望文件名与源文件夹中的第一个文件名或output.avi
中的第一个文件名相同,而不是list.txt
。
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
我想知道的一件事,是否可以将视频水平翻转或镜像而不重新编码?
答案 0 :(得分: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而无需重新编码,以提示视频播放器以给定的旋转方式播放它。也许有用于镜像或翻转的元数据标志,但我找不到任何标志。
如果这对您不起作用,我认为没有内置的解决方案可以在不重新编码的情况下完成此操作。
答案 1 :(得分:1)
是否可以将视频水平翻转或镜像而不重新编码?
否,使用过滤器(例如hflip,vflip,rotate等)时不可以。过滤需要重新编码。
在另一个答案中提到的旋转元数据可能足以满足此用例,但玩家之间的支持并不普遍。没有用于镜像或翻转的元数据:只有旋转。
如果这不可接受,则播放器本身可能具有镜像/翻转功能。示例:
mpv -vf hflip video.mp4