我需要帮助才能使用bat文件重命名某个文件。我试图用cmd批量编码视频 它就像这样
。\ exe \ x264_32_tMod-10bit-all --level 5.1 --preset veryslow --crf 23.0 --min-keyint 12 --scenecut 45 --bframes 8 --b-adapt 2 --ref 10 - weightp 2 --qcomp 0.6 --rc-lookahead 40 --direct auto --aq-mode 3 --aq-strength 0.9 --merange 32 --me umh --subme 10 --trellis 2 --psy-rd 0.40 :0.60 --acodec none --stylish --output。\ temp \ Output_v.mp4。\ Input \ xxx.mp4
。\ exe \ ffmpeg -y -i。\ Input \ xxx.mp4 -f wav - | 。\ exe \ neroAacEnc -ignorelength -q 0.4 -if - -of。\ temp \ Output_a.aac
。\ exe \ ffmpeg -y -i。\ Input \ xxx.mp4 -i。\ temp \ Output_v.mp4 -map 1 -map_metadata 0 -c copy。\ temp \ newmetadatavideo.mp4
。\ exe \ ffmpeg -y -i。\ temp \ newmetadatavideo.mp4 -i。\ temp \ Output_a.aac -vcodec copy -acodec copy。\ Output \ yyy.mp4
此处输入文件为xxx.mp4,yyy.mp4为输出
我使用子文件夹来区分input-output-exe文件和东西,所以它们实际上都不在一个文件夹中。像这样
谢谢!
ps使用此代码的输出文件大约小2-5倍,损失很小(至少对我而言),但由于我使用10位和5.1级,并非所有播放器都可以播放(没有尝试过)< / p>
答案 0 :(得分:0)
此代码不需要重命名文件。
更改第2行,使其显示正确的输入文件类型,并且FWIW。在Windows中不需要。\来引用当前目录中的文件或文件夹。
首先在一些示例文件上测试它 - 命令行与您的代码相同,只有输入和输出术语已被更改。
编辑:最后一个命令有&#34;。\ Output \ %% ~na.mp4&#34;而不是&#34;。\ Output \ %% ~nxa&#34;
所以它会将所有最终输出文件保存为.mp4
@echo off
for %%a in ("input\*.mpg" "input\*.mkv" "input\*.avi") do (
.\exe\x264_32_tMod-10bit-all --level 5.1 --preset veryslow --crf 23.0 --min-keyint 12 --scenecut 45 --bframes 8 --b-adapt 2 --ref 10 --weightp 2 --qcomp 0.6 --rc-lookahead 40 --direct auto --aq-mode 3 --aq-strength 0.9 --merange 32 --me umh --subme 10 --trellis 2 --psy-rd 0.40:0.60 --acodec none --stylish --output ".\temp\Output_v_%%~nxa" ".\Input\%%~nxa"
.\exe\ffmpeg -y -i ".\Input\%%~nxa" -f wav -| .\exe\neroAacEnc -ignorelength -q 0.4 -if - -of ".\temp\Output_a_%%~nxa.aac"
.\exe\ffmpeg -y -i ".\Input\%%~nxa" -i ".\temp\Output_v_%%~nxa" -map 1 -map_metadata 0 -c copy ".\temp\new_%%~nxa"
.\exe\ffmpeg -y -i ".\temp\new_%%~nxa" -i ".\temp\Output_a_%%~nxa.aac" -vcodec copy -acodec copy ".\Output\%%~na.mp4"
)
pause
如果工作正常,可以添加一些额外的代码来删除临时文件。
答案 1 :(得分:0)
我编辑了一些代码
@echo off
for %%a in ("input\*.mpg" "input\*.mkv" "input\*.avi" "input\*.mov" "input\*.mp4" "input\*.m4v") do (
.\exe\x264_32_tMod-10bit-all --level 5.1 --preset veryslow --crf 23.0 --min-keyint 12 --scenecut 45 --bframes 8 --b-adapt 2 --ref 10 --weightp 2 --qcomp 0.6 --rc-lookahead 40 --direct auto --aq-mode 3 --aq-strength 0.9 --merange 32 --me umh --subme 10 --trellis 2 --psy-rd 0.40:0.60 --acodec none --stylish --output ".\temp\Output_v.mp4" ".\Input\%%~nxa"
.\exe\ffmpeg -y -i ".\Input\%%~nxa" -f wav -| .\exe\neroAacEnc -ignorelength -q 0.4 -if - -of ".\temp\Output_a.aac"
.\exe\ffmpeg -y -i ".\Input\%%~nxa" -i ".\temp\Output_v.mp4" -map 1 -map_metadata 0 -c copy ".\temp\meta_video.mp4"
.\exe\ffmpeg -y -i ".\temp\meta_video.mp4" -i ".\temp\Output_a.aac" -vcodec copy -acodec copy ".\Output\%%~na.mp4"
)
pause
无需删除临时文件,包含其他一些视频类型并自动生成MP4文件
现在终于完成了!
感谢您的帮助