循环浏览Windows中文件夹中的文件名,并将每个名称发送到ffmpeg命令

时间:2016-08-04 19:41:17

标签: batch-file ffmpeg cygwin

在Windows中我想创建一个批处理文件,给定一个特定的目录将循环遍历文件的所有名称,并将它们中的每一个传递给命令,在我的情况下为ffmpeg。我发现有两个或三个用于循环文件夹的ffmpeg示例,但它们都在Linux中。目前我使用python脚本来执行此操作:

import os
import subprocess

sourcedir = "G:\Animation\Anime\OnePiece\Episodes\Main"
outputdir = "G:\Animation\Anime\OnePiece\Episodes\Converted"

for file in os.listdir(sourcedir):
    name = file[:file.rfind(".")]
    subprocess.call("ffmpeg -i " + sourcedir + "\\" + name + ".mkv -s 640x480 -map 0 -vcodec libx265 "+ outputdir + "\\" + name + ".mkv")

即使直接通过Windows批处理文件而不是通过Python运行它,也会将视频编码所需的时间减少10秒,这样可以节省数小时。

只是想一想,使用Cygwin上的bash命令会更好吗?

1 个答案:

答案 0 :(得分:2)

这应该让你接近。我并不是真正理解ffmpeg的语法。

 @echo off
 set "sourcedir=G:\Animation\Anime\OnePiece\Episodes\Main"
 set "outputdir=G:\Animation\Anime\OnePiece\Episodes\Converted"

 PUSHD "%sourcedir%"

 for %%F in (*.mkv) DO ffmpeg -i "%%F" -s 640x480 -map 0 -vcodec libx265 "%outputdir%\%%F"

 POPD