我有+300个旧格式(.VOB)的视频,我想将其转换为mp4。幸运的是,在整理了一些文档之后,我设法转换了其中的几个,但是我需要使其自动运行。不知道怎么办,甚至我都应该使用哪种语言(python,批处理...)
问题是我想保留子文件夹结构。例如,如果视频1位于文件夹B内,而文件夹B也位于文件夹A内,则输出必须位于名为“ output”的文件夹中,而转换后的视频内部必须位于文件夹B和文件夹A中
ffmpeg命令,如有必要:
ffmpeg -i input.vob -vf yadif=1 -c:v h264_nvenc output.mp4
预先感谢
答案 0 :(得分:0)
任务可以通过以下方式完成:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "BaseSourceFolder=C:\Temp\Source"
set "BaseTargetFolder=C:\Temp\Target"
for /R "%BaseSourceFolder%" %%I in (*.vob) do (
set "FullSourceFileName=%%I"
set "TargetFolder=%%~dpI"
set "TargetFileName=%%~nI"
setlocal EnableDelayedExpansion
set "TargetFolder=!TargetFolder:%BaseSourceFolder%=%BaseTargetFolder%!"
if not exist "!TargetFolder!" md "!TargetFolder!"
if exist "!TargetFolder!" "ffmpeg.exe" -i "!FullSourceFileName!" -vf yadif=1 -c:v h264_nvenc "!TargetFolder!!TargetFileName!.mp4"
endlocal
)
endlocal
BaseSourceFolder
和BaseTargetFolder
的文件夹路径必须在第三和第四行中定义。
BaseSourceFolder
不能包含字符=
,否则代码将无法正常工作。
这两个路径可以相同,尽管在这种情况下,仅使用一个命令行使用批处理文件会更有效。
应在具有完整路径的批处理文件中指定可执行文件ffmpeg.exe
,以提高效率,因为在这种情况下,Windows命令处理器cmd.exe
不需要在每个VOB文件中搜索当前的可执行文件。目录,如果没有在环境变量PATH
中列出的目录中找到另一个目录,则找不到该目录。
要了解所使用的命令及其工作方式,请打开command prompt窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
echo /?
endlocal /?
for /?
if /?
md /?
set /?
setlocal /?
有关命令 SETLOCAL 和 ENDLOCAL 的更多详细信息,另请参见this answer。