Noobs方法自动化x264 cmd

时间:2012-10-23 09:37:32

标签: video-encoding x264

所以这是我的脚本循环浏览特定的视频扩展»添加手动配置文件»生成必要的* .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由noob编写)完美运行&创建必要的文件。例如,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"

...&安培;加载器.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... 

你会发现这是一种安静灵活的方法,你可以使用特殊的文件来设置另一个循环»设置另一个配置文件。此外,当您大量使用--zone x264功能时,每个批处理文件都可以进行后期编辑 我是成功的,因为任何输出都没有错误...但是它的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是罪魁祸首,也许这里需要高级指南

1 个答案:

答案 0 :(得分:-1)

你的x264编译时是否支持mp4输入? (我相信需要lavc / lavformat,只需从x264.nl下载预编译的x264,其中包含所有附加内容)

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

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

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

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