0

所以这是我的脚本,用于循环播放特定的视频扩展 » 添加手动配置文件 » 生成必要的 *.bat 和最后一个最终的“加载器”批处理文件,以按顺序执行以前的 *.bat 文件和必要的日志记录(这给了安静的自由如果你愿意)

::==
:: gets lines into vars c1 v2 v...
@echo off
:: user input required
cd /d "d:\Trainers\out\"
setLocal EnableDelayedExpansion
dir /B /O:N | findstr ".wmv$ " >filename.txt
echo. >log.txt
:: user input required
for /f "tokens=* delims= " %%a in ('type filename.txt ^|findstr ".wmv$"') do (
set /a n+=1
echo. >file!n!.bat
set in=%in%%%a
:: user input required
set out=!in:.wmv=.mp4!
:: user input required
set v=x264 --crf 23  --level 3.1 --tune film -o "d:\Trainers\out\!in!" "d:\Trainers\out\!out!"
echo. !v!>file!n!.bat
)
dir /B /O:N | findstr ".bat$ " >x264_home.txt
for /f "tokens=* delims= " %%a in (x264_home.txt) do (
set /a n+=1
:: mtee is an external library Google it
set "z=call %%a | mtee /d/c/t/+ log.txt"
echo. !z! >> x264_home.bat
)
echo. @echo off > newFile.bat
type x264_home.bat >> newFile.bat
type newFile.bat > x264_home.bat
del newFile.bat,x264_home.txt,filename.txt
echo. pause >> x264_home.bat
echo. @echo All Operation done... >> x264_home.bat
:: user input required
move "d:\Trainers\out\*.bat" "d:\Program Files\x264_auto\test\"
:: user input required
move "d:\Trainers\out\log.txt" "d:\Program Files\x264_auto\test\"
::==

现在,上面相当容易理解的代码(bcz 它是由一个菜鸟编写的)完美运行并创建了必要的文件。例如其中一个 file1.bat 如下所示:

x264 --crf 23  --level 3.1 --tune film --preset veryslow --deblock -2:-1 --zones 24233,25324,q=20 --acodec aac --abitrate 80 -o "d:\Trainers\out\1.wmv" "d:\Trainers\out\1.mp4"

...& loader .bat 文件看起来像

 @echo off 
 call file1.bat | mtee /d/c/t/+ log.txt 
 call file2.bat | mtee /d/c/t/+ log.txt
 call file3.bat | mtee /d/c/t/+ log.txt
 @echo All Operation done... 

您会看到这是一种安静灵活的方法,因为您可以使用特殊的 filestr » 设置另一个循环 » 设置另一个配置文件。此外,每个批处理文件都可以在以后编辑,尤其是当您大量使用--zonex264 功能时,我是成功的,因为任何输出中都没有错误……但是它的 x264.exe(提供程序/编译器 x264GUI)会引发错误,否则不会?

d:\Program Files\x264_auto\test>x264 --crf 23  --level 3.1 --tune film --preset
veryslow --deblock -2:-1 --zones 24233,25324,q=20 --acodec aac --abitrate 80 -o
"d:\Trainers\out\1.wmv" "d:\Trainers\out\1.mp4"
ffms [error]: could not create index
lavf [error]: could not open input file
raw [error]: raw input requires a resolution.
x264 [error]: could not open input file `d:\Trainers\out\1.mp4' via any method!

它的 x264 是罪魁祸首,也许这里需要高级指南

4

1 回答 1

-1

您的 x264 编译时是否支持 mp4 输入?(我认为需要 lavc/lavformat,只需从 x264.nl 下载预编译的 x264 即可)

如果直接运行相同的命令,是否会出现相同的错误?(不是通过 bat 文件)

如果是,是否仅在您使用区域时发生?(如果是这样,那么将您的命令行示例作为 x264 错误发布到 x264-devel 邮件列表)

如果不是,您确定您运行的是完全相同的 x264 吗?(也许您的系统上有几个不同的地方)

我建议您在 python 中使用 subprocess.call(...) 或 (b) 在 cygwin/bash/shell 脚本中执行您正在执行的操作,或者 . bat 文件几乎是任何问题的错误答案 :) 这两个文件的好处是它们对程序参数有简单、常规的转义规则。

于 2012-11-16T11:49:00.967 回答