2014-10-05 151 views
0

我需要帮助重新命名一些文件使用bat文件。我试图批次进行视频编码CMD 它是这样的批量重命名/重新命名为视频编码

  1. 读取文件的名称,然后将其保存为文本文件 (file_read.txt)。
  2. 将这些文件重命名为简单名称,1.mp4 2.mp4等直到全部 文件重命名为(xxx.mp4)。即使他们WMV/MOV/AVI,我通常只是重新命名为MP4,真的不知道,如果它的坏的或不
  3. 编码从2重命名的文件,这是我的代码进行编码

。 \ 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 - 直接自动--aq-模式3 - 水力强度0.9 - 范围32 - 水位 - 水位10 - 水位2 - 水位 - 水位0.40:0.60 - acodec没有--stylish --output \ TEMP \ Output_v.mp4 \输入\ xxx.mp4

\ EXE \的ffmpeg -y -i \输入\ 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副本。\输出\ yyy.mp4

这里的输入文件是xxx.mp4和yyy.mp4是输出

  • 重新命名yyy.mp4文件转换成file_read.txt。扩展将是MP4(因为 我对其进行编码转换成MP4)
  • 我使用的子文件夹来区分输入输出exe文件和东西,所以没有人其实都是一个文件夹中。这样

    • 根(我把这里bat文件)
      • EXE(X264,ffmpeg的,Nero AAC编码都在这里)
      • 输入(这里我把我所有的影片)
      • 输出(完视频)
      • 温度(我把视频音频和file_read.txt这里)

    谢谢!

    ps我使用这段代码的输出文件大约是小损失的2-5倍(至少对我来说),但由于我使用10位和5.1级,并非所有玩家都可以玩(未尝试过)

    回答

    0

    此代码应该消除重命名文件的需要。

    将第2行更改为显示正确的输入文件类型和FWIW。\在Windows中不需要引用当前目录中的文件或文件夹。

    首先在一些示例文件上对其进行测试 - 命令行与您的代码相同,但只更改了输入和输出项。

    编辑: “\输出\ %%〜na.mp4" 最后的命令拥有的,而不是” \输出\ %%〜NXA。”
    所以它都将最终输出文件保存为.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 
    

    如果工作正常,可以添加一些额外的代码来删除临时文件。

    +0

    它工作!但我想要mp4/mkv的所有输出。怎么做? btw什么是%%〜nxa的意思,我在哪里可以学到更多?谢谢 – ph34r 2014-10-06 03:51:48

    +0

    '%%〜nxa'是对原始文件名和扩展名的引用,你可以在cmd提示符的'for /?'帮助的最后一页读到关于修饰符的信息。我编辑了上面的代码,将所有最终输出文件保存为'.mp4'扩展名,但重命名扩展名实际上并不会改变媒体容器 - 尽管ffmpeg可能使用它来确定媒体容器,但我不确定。这只是你需要研究的东西。 – foxidrive 2014-10-06 08:56:55

    +0

    不好意思看它,再次感谢 – ph34r 2014-10-07 00:32:30

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

    它终于完成了,现在!

    感谢您的帮助