批量重命名/重命名以进行视频编码

时间:2014-10-05 02:48:45

标签: batch-file video

我需要帮助才能使用bat文件重命名某个文件。我试图用cmd批量编码视频 它就像这样

  1. 读取文件名,然后将其保存到文本文件中 (file_read.txt)。
  2. 将这些文件重命名为简单名称,1.mp4 2.mp4等,直到全部 重命名的文件(xxx.mp4)。即使它们是wmv / mov / avi,我通常只是重命名为mp4,不知道它是不是坏了
  3. 对来自2的重命名文件进行编码。这是我的编码代码
  4.   

    。\ 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为输出

    1. 将yyy.mp4文件重命名为file_read.txt。扩展名为mp4(自此 我将它们编码为mp4)
    2. 我使用子文件夹来区分input-output-exe文件和东西,所以它们实际上都不在一个文件夹中。像这样

      • root(我把bat文件放在这里)
        • exe(x264,ffmpeg,nero aac all here)
        • 输入(我把所有视频放在哪里)
        • 输出(完成的视频)
        • temp(我把视频音频和file_read.txt放在这里)

      谢谢!

      ps使用此代码的输出文件大约小2-5倍,损失很小(至少对我而言),但由于我使用10位和5.1级,并非所有播放器都可以播放(没有尝试过)< / p>

2 个答案:

答案 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文件

现在终于完成了!

感谢您的帮助