如果想要幫 mp3 音檔的前面,加上一段靜音,怎麼處理。用 FFmpeg 是一定可以的。底下這個討論串中,有好幾種方法:
我選擇使用
adelay filter
例如想將 in.mp3 的最前面加上 250微秒的靜音,就用:
ffmpeg -i in.mp3 -af "adelay=250|250" output.mp3
詳細的用法可以參考 FFmpeg 網站的使用手冊:
在 Windows 中,如何將整個目錄中的 mp3 檔案批次加上靜音呢?
在批次檔中,我們可以利用 FOR 來取得指定路徑中的所有檔名。FOR 怎麼用,可以參考這個討論串:
再套上前面 ffmpeg 的語法,就可以完成囉!寫了個批次檔,記錄如下:
@ECHO OFFREM ffmpeg 的路徑設定set ffmpegPath=ffmpegREM 在前面加幾微秒的靜音set silenceMilliSeconds=250if %1test==test goto errorREM 抓第一個參數為 mp3 資料夾set sourceFolderName=%1REM 輸出的資料夾名稱set outputFolderName=%1\newREM 建新的資料夾以存放處理好的檔案mkdir %outputFolderName%setlocal enabledelayedexpansionfor %%f in (%sourceFolderName%\*.mp3) do (rem echo %%frem echo %outputFolderName%\%%~nf%%~xf%ffmpegPath% -i %%f -af "adelay=%silenceMilliSeconds%|%silenceMilliSeconds%" %outputFolderName%\%%~nf%%~xf)@echo ON@echo.@echo check %outputFolderName%@echo.goto end:error@echo ON@echo.@echo %0 MP3_folder_name@echo.:end
假設上面的指令稿儲存到 convert.bat 中,而 mp3 的檔案都放在 source 資料夾中了,只要執行這樣的指令:
convert.bat source
加好靜音片段的新檔案,都會儲存到 source\new 中。
批次檔中的指令,關鍵在如何取出所有 mp3 檔名:
for %%f in (%sourceFolderName%\*.mp3) do (
幾個重點如下:
- 「in」後面接的是指定的路徑,取得的檔名會放到 %%f
- %%~nf 是取出主檔名
- %%~xf 是取出副檔名
有了這些,其它就是不同字串間的組合了。
沒有留言:
張貼留言