2014-10-05 97 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文件

    它終於完成了,現在!

    感謝您的幫助