帶有QT GUI和命令行接口的標籤編輯器。支持MP4(iTunes),ID3,Vorbis,Opus,Flac和Matroska。
標籤編輯器可以讀寫以下標籤格式:
進一步的評論:
標籤編輯器還可以顯示技術信息,例如ID,格式,語言,比特率,持續時間,大小,時間戳,採樣頻率,FPS和其他軌道的信息。
它還允許檢查和驗證MP4和Matroska文件的元素結構。
有時,標籤編輯器必須重寫整個文件才能應用更改。這導致創建臨時文件。使用GUI的默認設置,這甚至可以執行保守,因為臨時文件也可以作為備份,以防萬一出現問題,例如您的計算機在保存時會崩潰,或者在標籤編輯器中保存錯誤,特別是結構化文件。因此,當使用CLI時,還建議使用--force-rewrite
。
下一節介紹如何調整設置以避免以沒有備份的費用重寫,在文件末尾存儲標籤中有一些填充,並在文件末尾存儲標籤。
但是,無論如何,在所有情況下,都不會總是避免重寫文件。您可以在GUI設置或CLI選項--temp-dir
中為臨時文件配置目錄。然後,您可以在某個時候輕鬆清理所有臨時文件。為了效率,臨時目錄應與您要編輯的文件同一文件系統。尚未實現一個自動刪除臨時文件的功能。
編輯器允許您選擇是否應將標籤放置在MP4/Matroska文件的開頭還是結尾處。在文件末尾放置標籤可以避免重寫整個文件以應用更改。
在CLI中,這是通過--tag-pos
選項控制的。為了強制執行特定的--tag-pos
,即使需要重寫文件,也將與--force
選項結合使用。
ID3V2標籤和Vorbis/Opus註釋只能在開始時放置。 ID3V1標籤只能放置在文件末尾。因此,在處理此類標籤時,這種配置沒有效果。
也可以控制索引/提示的位置。但是,目前僅在處理Matroska文件時得到支持。
注意:由於標籤和索引相互綁定,因此無法實現MP4。處理MP4文件時,索引位置將始終與標籤位置相同。
將索引放在文件的開頭有時稱為faststart 。
對於通過CLI強迫FastStart,需要以下選項:
tageditor set --index-pos front --force
填充允許添加其他標籤信息,而無需重寫整個文件或附加標籤。可以配置使用填充物:
也可以強制重寫整個文件以強制使用首選的填充。
相關的CLI選項是--min-padding
, --max-padding
, --preferred-padding
和--force-rewrite
。
目前,在處理OGG流時,目前不支持填充(在處理RAW FLAC流時得到支持)。
如“備份/臨時文件”部分中所述,這不是一個好主意,因為重寫整個文件時創建的臨時文件也可以用作備份。但是,如果您想避免盡可能多地重寫文件,請在GUI的“文件佈局”設置中設置以下內容:
使用CLI時,您只需要在CLI參數中添加--max-padding 429496729
(並避免以前部分中提到的任何其他參數)。
編輯大文件(尤其是matroska文件)可能需要一些時間。為了提高性能,請將索引放在文件的末尾(CLI選項--index-pos back
),因為不必重新計算索引的大小。還要遵循“備份/臨時文件”部分的建議,以強制重寫,並將臨時目錄放在與您正在編輯的文件相同的文件系統上。強迫重寫可以提高性能,因為那樣的標籤編輯器甚至都不會嘗試查看是否可以避免它,因此可以跳過計算,這些計算可能會花費很大的時間來獲得大型Matroska文件。
當然,能夠避免重寫仍然更加最佳。結帳有關如何實現這一目標的部分。為了避免重寫時進一步提高性能,請將標籤放在末端(CLI選項--tag-pos back
)。然後,標籤編輯器甚至不會嘗試將標籤放在前面,因此可以跳過一些計算。 (避免重寫仍然不是一個好主意。)
Matroska容器格式(以及基於Matroska的WebM)正在與共同的約定中分解。因此,並非下面提到的所有CLI示例在此類文件上使用都是有意義的。
通常,一個Matroska文件可以具有多個標籤,並且每個標籤都有一個“目標”,該標籤決定了標籤的字段應用的內容,例如歌曲或整張專輯。因此,使用CLI或GUI時,您需要了解要添加字段的標籤/目標。
Matroska也不像其他格式一樣使用一個組合字段來進行軌道/磁盤編號。相反,它使用了單獨的字段part
和totalparts
這些部分需要再次將其添加到所需目標的標籤(例如50/“專輯”曲目編號和Total)。
請查看有關標籤的官方Matroska文檔以獲取詳細信息。它還包含音頻內容和視頻內容的示例。
請注意,標籤編輯器不支持Matroska文檔中提到的XML格式。在GUI中,您只需通過編輯器頂部的控件添加/刪除/編輯標籤及其目標。在設置中,您還可以指定加載文件時應自動添加某些目標的標籤。使用CLI時,您可以通過在該字段之前指定目標來指定將字段添加到某個目標的標籤中。您還可以明確刪除某些目標的標籤。可以在下面找到混凝土CLI使用的示例。
請參閱Github上的發布部分。
tageditor-qt6
軟件包,如果可用於操作系統。tageditor
可用libopengl0
安裝在Debian/Ubuntu上)QT_QPA_PLATFORM=xcb
如果在系統上不起作用,請禁用本地Wayland支持)B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
簽名。B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
簽名。標籤編輯器具有基於QT的GUI和命令行接口。對於C ++庫接口查看基礎TagParser庫。
GUI應該是自我解釋的 - 許多UI元素都具有帶有進一步解釋的工具提示。基本工作流程非常簡單:
您可以將編輯器的行為設置為保持以前的值,因此您不必一次又一次地輸入專輯名稱或藝術家的信息。
GUI不支持設置同一字段的多個值(除了不同類型的封面)。如果文件已經包含具有多個值的字段,則將丟棄附加值。如果需要每個字段的多個值,則使用CLI。不過,並非所有標籤格式都支持這一點。
GUI不支持批處理處理。我建議對此使用CLI。
此屏幕截圖顯示了實驗性音樂brainz/Lyricwiki搜索。
結帳“設置對話框”。你可以
GUI的設置不會影響CLI。
還有一個工具可以使用文件中存儲的標籤信息重命名文件。每個文件的新名稱是由可以自定義的小JavaScript生成的。提供了一個示例腳本。在進行任何實際更改之前,您將看到帶有生成文件名稱的預覽。如示例腳本所示,也可以將文件移動到另一個目錄中。
標籤編輯器還具有Musicbrainz,Cover Art Archive和Lyricwiki搜索。
tageditor <operation> [options]
與--help
結帳可用的操作和選項。對於所有可用字段名稱的列表,跟踪屬性名稱和修飾符,請使用CLI選項--print-field-names
。並非所有字段都由所有標籤/容器格式支持。最值得注意的是,Matroska容器格式不使用track
/ disk
存儲軌道 /磁盤編號和總數。取而代之的是,需要在所需的目標上使用字段part
和totalparts
。
請注意,Windows用戶必須使用tageditor-cli.exe
而不是tageditor.exe
或將Mintty用作終端。查看“特定於Windows的問題”部分以獲取詳細信息。
以下是一些bash示例,說明了獲取和設置標籤信息:
在指定目錄中顯示所有 *.m4a文件的標題,專輯和藝術家:
tageditor get title album artist --files /some/dir/*.m4a
在指定目錄中顯示所有 *.mkv文件的所有支持字段:
tageditor get --files /some/dir/*.mkv
提取指定文件的封面:
tageditor extract cover --output-file the-cover.jpg --file some-file.opus
--attachment
。在指定目錄中顯示有關所有 *.m4a文件的技術信息:
tageditor info --files /some/dir/*.m4a
設置標題,專輯,藝術家,封面和軌道編號,所有 *.m4a文件中指定目錄中的文件:
tageditor set title="Title of "{1st,2nd,3rd}" file" title="Title of "{4..16}"th file"
album="The Album" artist="The Artist"
cover'=/path/to/image' lyrics'>=/path/to/lyrics' track'+=1/16' --files /some/dir/*.m4a
>
“字段名” lyrics
使標籤編輯器從指定文件讀取值。這也適用於其他領域,並暗示cover
。track
之後的+
符號表示在處理文件後應增加字段值。/path/to/image
以及文件/path/to/lyrics
歌詞。設置指定文件的標題和第二個指定文件的專輯:
tageditor set title0="Title for both files" album1="Album for 2nd file"
--files file1.ogg file2.mp3
字段名稱之後的數字指定了第一個使用該值的文件的索引。第一個索引是0。
使用ID 3134325680
專門為曲目設置標題,並刪除針對歌曲/曲目的標籤以及專輯/電影/情節:
tageditor set target-level=30 target-tracks=3134325680 title="Title for track 3134325680"
--remove-target target-level=50 --remove-target target-level=30
--files file.mka
有關更多信息,請查看Matroska規範。
設置自定義字段:
tageditor set mkv:FOO=bar1 mp4:©foo=bar2 -f file.mkv file.m4a
FOO
設置為file.mkv中的bar1
,並且自定義字段©foo
設置為file.m4a中的bar2
。因此,前綴告訴標籤編輯器,指定的字段ID是特定標籤格式的本機字段ID,而不是通用標識符。當然,天然字段僅應用於相應的格式。mp4
:Itune風格的MP4/M4A ID(必須是4個字符)mkv
:Matroska IDid3
:ID3V2 ID(必須完全是3或4個字符,具體取決於標籤版本)vorbis
:Vorbis評論ID,也適用於Opus(也使用Vorbis評論)從所有軌道上刪除“強制”標誌,以ID 2為“默認值”標記曲目,並將其語言設置為“ GER”:
tageditor set track-id=all forced=no track-id=2 default=yes language=ger
這是另一個示例,證明了數組和語法對自動提示數字字段(例如軌道號)的使用:
cd some/dir
# create an empty array
titles=()
# iterate through all music files in the directory
for file in *.m4a; do
# truncate the first 10 characters
title="${file:10}";
# append the title truncating the extension
titles+=("title=${title%.*}");
done
# now set the titles and other tag information
tageditor set "${titles[@]}" album="Some Album" track+=1/25 disk=1/1 -f *.m4a
設置具有描述的特殊類型的封面:
tageditor set cover=":front-cover" cover0="/path/to/back-cover.jpg:back-cover:The description" -f foo.mp3
path:cover-type:description
。封麵類型和描述是可選的。可以通過--cover-type-delimiter
更改定界符,如果路徑包含a :
cover
後的0
。否則,第二個封面僅在第二個文件中設置(在此示例中甚至沒有指定)。… cover= cover0="/path/to/back-cover.jpg:back-cover"
:
不存在)時,更換了指定類型的所有現有封面,新封面將具有空的描述。:
。… cover=":back-cover"
。tageditor --print-field-names
顯示。通過運行腳本以動態計算更改來設置字段:
tageditor set --pedantic debug --script path/to/script.js -f foo.mp3
main()
函數。每個文件都調用此函數,並傳遞一個代表當前文件作為第一個參數的對象。僅當main()
返回真相值或undefined
時,該文件僅修改;否則,該文件將完全跳過(因此根本沒有修改,因此不應用通過--values
傳遞的值)。testfiles/set-tags.js
示例,該示例應用了基本修復程序,並在通過設置時嘗試獲取歌詞和覆蓋藝術(例如--script-settings addCover=1 addLyrics=1
)。--pedantic debug
非常有用。您還可以添加--script-settings dryRun=1
,並在腳本中檢查該設置,如testfiles/set-tags.js
所示。testfiles/set-tags.js
所示,公共標籤字段被視為對象屬性。ArrayBuffer
。使用還必須使用ArrayBuffer
來設置封面等二進製字段的值。String
或Number
。您還必須使用這些類型之一來設置這些字段的值。然後,分配內容的字符串代表將自動轉換為內部所需的內容。utility
對象揭示了有用的方法,例如用於記錄和控制事件循環的方法。testfiles/http.js
以獲取使用XHR並控制事件循環的示例。--id3v1-usage
之類的選項)。因此,腳本執行過程中存在的標籤不一定代表磁盤上文件中實際存在的標籤(而是保存文件後將存在的標籤)。--values
)指定值,那麼這些值比腳本設置的值優先。file.rename(newPath)
)。這將立即完成,並且如果main()
返回虛假值(因此,只能通過返回虛假值來重命名文件而不對其進行修改)。如果指定的路徑是相對的,則將其相對於文件的當前目錄進行解釋(而不是標記編輯器的當前工作目錄)。utility.openFile(path)
打開另一個文件。這使得可以從另一個文件中復制標籤,例如,從轉換為其他格式時丟失的原始文件中插入標籤。提到的示例腳本set-tags.js
還通過腳本設置傳遞時,為封面和歌詞演示了這一點(例如--script-settings addCover=1 originalDir=… originalExt=…
)。例子: cd '/…/music'
find 'artist/album' -iname '*.m4a' -exec tageditor set
--pedantic debug
--script /…/tageditor/testfiles/set-tags.js
--script-settings dryRun=1 originalDir='../music-lossless' originalExt=.flac addCover=1 addLyrics=1
--temp-dir /…/tmp/tageditor
--files {} +
tageditor set ... --pedantic warning -f ...
tageditor info --pedantic warning --validate -f ...
--encoding
和GUI設置設置標籤中使用的首選編碼。該應用程序取決於C ++實用程序和TagParser,並且以與這些庫相同的方式構建。有關基本說明,請查看C ++實用程序的讀數文件。啟用QT GUI時,也需要QT和QTUTISINES。
為避免分別構建C ++實用程序/TagParser/QTutilitys,請按照“構建此筆直”下的說明。還有有關各種構建變量的文檔,可以將其傳遞給CMAKE以影響構建。
默認情況下啟用了QT GUI。需要以下QT模塊(僅測試了最新的QT 5和QT 6版本):核心並發GUI網絡窗口小部件聲明/腳本WebEngineWidgets/webkitwidgets
請注意,舊QT版本缺乏對現代JavaScript功能的支持。要使用基於JavaScript的重命名工具,建議至少使用QT 5.12。
要指定要使用的主要QT版本,請設置QT_PACKAGE_PREFIX
(例如add -DQT_PACKAGE_PREFIX:STRING=Qt6
to cmake garmuments)。
-DWEBVIEW_PROVIDER:STRING=webkit/webengine/none
to cmake參數使用QT WebKit(也可以與'Revived'版本一起使用),QT WebEngine或根本沒有Web視圖。如果沒有使用Web視圖,則只能使用普通樹視圖顯示文件信息。否則,用戶可以在網頁和樹視圖之間進行選擇。-DJS_PROVIDER:STRING=script/qml/none
to cmake參數使用qt腳本,qt qml或根本沒有JavaScript引擎。如果沒有使用JavaScript引擎,則將禁用重命名實用程序。如果僅需要CLI,則可以在沒有GUI的情況下構建。在這種情況下,無需QT依賴項(包括QTutilitys)。
要在沒有GUI的情況下構建,請在CMAKE調用中添加以下參數:
-DWIDGETS_GUI=OFF -DQUICK_GUI=OFF
作為反射式Rapidjson的小型演示,標籤編輯器具有可選的JSON導出。要啟用它,請在cmake參數中添加-DENABLE_JSON_EXPORT=ON
。
啟用後,需要以下其他依賴項(僅在構建時間):Rapidjson,Reflective-rapidjson和LLVM/Clang
cd "$SOURCES"
git config core.symlinks true # only required on Windows
git clone https://github.com/Martchus/cpp-utilities.git c++utilities
git clone https://github.com/Martchus/tagparser.git
git clone https://github.com/Martchus/qtutilities.git # only required for Qt GUI
git clone https://github.com/Martchus/reflective-rapidjson.git # only required for JSON export
git clone https://github.com/Martchus/tageditor.git
git clone https://github.com/Martchus/subdirs.git
git config core.symlinks=true
僅在Windows下才需要正確處理符號鏈接。這需要一個近期的git版本和一個支持Symlinks(NTFS Works)的文件系統。此外,您需要啟用Windows開發人員模式。如果您遇到symlink創建上的“找不到”錯誤,請使用git reset --hard
來解決此問題。 cd "$BUILD_DIR"
cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DLANGUAGE_FILE_ISO_639_2="/usr/share/iso-codes/json/iso_639-2.json"
-DCMAKE_INSTALL_PREFIX="/install/prefix"
"$SOURCES/subdirs/tageditor"
/install/prefix
。/usr/…/iso_639-2.json
使用ISO-編碼安裝的路徑。 cd "$BUILD_DIR"
ninja install
DESTDIR
設置為可寫的位置(例如DESTDIR="temporary/install/dir" ninja install
),然後將文件從那裡移動到所需的位置。 可以通過使用CLI-WRAPPER而不是主要可執行文件來解決以下警告。這是以-cli.exe
結尾的文件。另外,您可以使用Mintty(例如MSYS2),也不受這些問題影響:
set ENABLE_CP_UTF8=0
如果不需要。set ENABLE_CONSOLE=0
禁用該行為。黑暗模式應在Windows 11下的框開箱即用,否則可以通過選擇融合樣式來啟用。
TAG編輯器在QT 6開始支持PMV2。您可以根據QT文檔進行調整。
版權所有©2015-2024 Marius Kittler
所有代碼均在GPL-2或陪同人員下獲得許可。