我正在尝试将一批 .mov 文件转换为 mp4。如何从管道获取文件名以生成 ffmpeg 命令?如何在链接中多次使用管道参数?我试图得到类似的东西:
ls *.MOV | ffmpeg -y -i $file "$file.mp4"
答案1
当你想使用标准输出一个命令作为标准输入另一个命令。但您需要将文件作为输入传递给ffmpeg
,而不是其标准输入上的文件名。并且您需要ffmpeg
多次运行,每个输入文件运行一次以获取输出文件。
长话短说,管道对此没有用,您需要一个循环,正如其他答案所建议的那样。但应该用双引号括住文件名参数:
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
您在评论中提到您可以编写 Perl 脚本。那确实有点过头了。Bash 是一种更简单、更合适的方法。请注意,您可以在一行中编写上述脚本,然后直接在命令行上运行它。
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done
答案2
for
你可以用一个简单的循环来实现
#!/bin/bash
for file in /path/to/*.MOV
do
echo "Converting $file"
done