对目录中的每个文件运行命令

对目录中的每个文件运行命令

我正在将所有视频文件转换为 WebM,以大大减少硬盘空间的使用量。为此,我使用程序“ffmpeg”,它需要指定输入和输出文件。由于转换过程需要很长时间,我希望昼夜不停地对视频文件夹中的每个视频文件运行它,这样我就不必自己手动执行了。

通过谷歌搜索,我找到了实现此目的的方法,但输出将是一个大文件。有人能解释一下如何自动将“video1.avi”转换为“video1.webm”,将“video2.avi”转换为“video2.webm”等等吗?

答案1

您可以使用bash 循环- 基本结构如下

for file in *.avi; do ffmpeg -i "$file" "${file%.avi}".webm; done

ffmpeg您可以根据需要添加任何其他命令行选项。

答案2

下面是完成该作业的 Python 脚本:

#!/usr/bin/env python3

import os
import subprocess

sourcedir = "/path/to/sourcedirectory"

for file in os.listdir(sourcedir):
    name = file[:file.rfind(".")]
    subprocess.call(["fmpeg", "-i", sourcedir+"/"+name+".avi", sourcedir+"/"+name+".webm"])

通过使用 subproces.call(),脚本只有在上一次转换完成后才会继续进行下一次转换。

使用方法:

将脚本复制到一个空的文本文件中,设置文件的源目录,另存为convert.py并通过命令运行

python3 /path/to/convert.py

答案3

您也可以使用我的免费应用程序。它叫做媒体转换器它是 ffmpeg 的简单前端。如果需要,您必须使用大部分选项,然后拖放所有需要转换的文件并选择适当的选项。输出文件的命名是自动完成的。您必须从下面的链接下载它,因为 Ubuntu 软件中心的那个太旧了。我希望你喜欢它。 http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html

相关内容