修復因為 Replay Gain 套用時更改了 "修改日期" 屬性

Replay Gain

為一種將音量標準化的標準與技術,音頻太大聲則變小聲,太小聲則變大聲,使播放任何音頻時音量趨一致。

Replay Gain 通常不會直接修改音頻,而是將該增減多少音量的訊息存進檔案的 Tag 內

問題

Replay Gain 將增益訊息寫到檔案時會導致檔案的 "修改日期" 屬性被設成當前的時間, 如果想用例如 foobar2000 的 Filter: %last_modified% 功能,將無法正確篩選出最近的音樂。

通常在管理音樂時會集中放在某資料夾,而音樂有舊有新,因此看 "建立日期" 或 "修改日期" 都能篩選出最近的音樂。

但 foobar2000 無法設定在 Replay Gain 寫入 Tag 時保存日期屬性, 會將 "修改日期" 弄亂,而 Filter 目前也無法篩選 "建立的日期"。

解決

最好的解決辦法是在套用 Replay Gain 前先將檔案的 "修改日期" 保存,待套用後再修復。

另一種方法是在套用 Replay Gain 後將 "修改日期" 設成 "建立的日期"。因此我作了一個小程式,利用這種方法,能將某資料夾下的所有音樂 "修改日期" 回復成 "建立的日期"

程式

on Github

下載方法

點網頁 README 部分的連結 Download binary file "here",再點 Raw

系統需求

  • Windows
  • 需要 .NET Framework 4 或更高

功能

  • 能篩選副檔名
  • 能篩選路徑
  • 能略過已處理檔案

使用方法

  1. 使用 foobar2000 的 Replay Gain 套用到檔案
  2. 使用本程式修復檔案屬性
    1. 點 "..." 瀏覽包含音樂的資料夾
    2. 點 "Preview" 預覽將會修改的檔案
    3. 點 "Execute" 執行
    4. 完成

自訂

如果不想用 "建立的日期" 去覆蓋 "修改日期",可以修改原始碼:

修改屬性部分

  • FormMain.cs
    • ChangeAttrib(string path)

檢查檔案是否已處理

  • FormMain.cs
    • CheckIgnore(string path)

原始碼

on Github


Shawn http://ebola777.pixnet.net/
文章標籤
創作者介紹

Shawn's Blog

Shawn 發表在 痞客邦 PIXNET 留言(0) 人氣()