QT GUI 및 명령 줄 인터페이스의 태그 편집기. MP4 (iTunes), ID3, Vorbis, Opus, FLAC 및 Matroska를 지원합니다.
태그 편집기는 다음 태그 형식을 읽고 쓸 수 있습니다.
추가 발언 :
태그 편집기는 ID, 형식, 언어, 비트 전송, 지속 시간, 크기, 타임 스탬프, 샘플링 빈도, FPS 및 기타 트랙 정보와 같은 기술 정보를 표시 할 수도 있습니다.
또한 MP4 및 Matroska 파일의 요소 구조를 검사하고 검증 할 수 있습니다.
때로는 TAG 편집기가 변경 사항을 적용하기 위해 전체 파일을 다시 작성해야합니다. 이로 인해 임시 파일이 생성됩니다. GUI의 기본 설정을 사용하면 임시 파일이 문제가 발생할 경우를 대비하여 백업 역할을하기 때문에 보수적으로 시행됩니다. 예를 들어, 저장하는 동안 컴퓨터가 충돌하거나 TAG 편집기 내 버그가 특히 구조화 된 파일을 중단합니다. 따라서 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 스트림을 다룰 때는 패딩을 활용하는 것이 현재 지원되지 않습니다 (원시 FLAC 스트림을 처리 할 때 지원됩니다).
"백업/임시 파일"섹션에 설명 된 바와 같이, 전체 파일을 다시 작성할 때 생성 된 임시 파일도 백업 역할을하는 것이 좋지 않습니다. 그러나 그럼에도 불구하고 가능한 한 파일을 다시 작성하지 않으려면 GUI의 "파일 레이아웃"설정에서 다음을 설정하십시오.
CLI를 사용할 때는 CLI 인수에 --max-padding 429496729
추가하면 (이전 섹션에서 언급 된 다른 인수를 피하십시오).
큰 파일 (특히 Matroska 파일)을 편집하는 데 시간이 걸릴 수 있습니다. 성능을 향상 시키려면 인덱스의 크기를 다시 계산할 필요가 없기 때문에 파일 끝 (CLI 옵션 --index-pos back
)에 인덱스를 넣으십시오. 또한 "백업/임시 파일"섹션의 조언을 따르면 다시 작성하고 편집중인 파일과 동일한 파일 시스템에 임시 디렉토리를 넣으십시오. 다시 쓰기를 강제하면 성능이 향상 될 수 있습니다. 태그 편집기는 피할 수 있는지 여부를 확인하지 않으므로 큰 Matroska 파일에 주목할만한 시간이 걸릴 수있는 계산을 건너 뛸 수 있기 때문입니다.
물론 다시 쓰기를 피할 수 있다는 것은 여전히 더 최적입니다. 이를 달성하는 방법에 대한 이전 섹션에서 체크 아웃하십시오. 재 작성을 피할 때 성능을 더욱 향상 시키려면 태그를 끝에 넣으십시오 (CLI 옵션 --tag-pos back
). 그런 다음 태그 편집기는 전면에 태그를 넣으려고 시도하지 않으므로 몇 가지 계산을 건너 뛸 수 있습니다. (다시 쓰기를 피하는 것은 여전히 좋은 생각이 아닙니다.)
Matroska 컨테이너 형식 (및 Matroska를 기반으로하는 웹)은 일반적인 규칙으로 깨지고 있습니다. 따라서 아래에 언급 된 모든 CLI 예제가 그러한 파일에서 사용하는 것이 의미가있는 것은 아닙니다.
일반적으로 하나의 Matroska 파일은 여러 개의 태그를 가질 수 있으며 각 태그에는 "Target"이 있으며, 이는 태그 필드가 적용되는 것, (예 : 노래 또는 전체 앨범)를 결정합니다. 따라서 CLI 또는 GUI를 사용할 때는 필드를 추가 할 태그/대상에 대해 알아야합니다.
Matroska는 또한 트랙/디스크 번호에 하나의 결합 된 필드를 사용 하지 않고 다른 형식과 마찬가지로 총계입니다. 대신 별도의 필드 part
과 totalparts
사용하여 원하는 대상의 태그에 다시 추가해야합니다 (예 : 트랙 번호 및 총계).
자세한 내용은 태깅에 대한 공식 Matroska 문서를 확인하십시오. 또한 오디오 컨텐츠 및 비디오 컨텐츠에 대한 예제도 포함되어 있습니다.
TAG 편집기는 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를 사용하는 것이 좋습니다.
이 스크린 샷은 실험 Musicbrainz/Lyricwiki 검색을 보여줍니다.
설정 대화 상자를 확인하십시오. 당신은 할 수 있습니다
GUI 설정은 CLI에 영향을 미치지 않습니다.
파일에 저장된 태그 정보를 사용하여 파일 이름을 바꾸는 도구도 있습니다. 각 파일의 새 이름은 사용자 정의 할 수있는 작은 JavaScript에 의해 생성됩니다. 예제 스크립트가 제공됩니다. 실제 변경이 이루어지기 전에 생성 된 파일 이름이있는 미리보기가 표시됩니다. 예제 스크립트에 표시된 것처럼 파일을 다른 디렉토리로 이동할 수도 있습니다.
TAG 편집기에는 MusicBrainz, Cover Art Archive 및 Lyricwiki 검색도 특징입니다.
tageditor <operation> [options]
--help
로 사용 가능한 작업 및 옵션을 확인하십시오. 사용 가능한 모든 필드 이름 목록, 트랙 속성 이름 및 수정자는 CLI 옵션 인 --print-field-names
사용하십시오. 모든 필드가 모든 태그/컨테이너 형식에서 지원되는 것은 아닙니다. 특히 Matroska 컨테이너 형식은 track
/ disk
사용하여 트랙 / 디스크 번호를 저장하고 총계는 한 필드에 저장하지 않습니다. 대신, 필드 part
및 totalparts
원하는 대상에 사용해야합니다.
Windows 사용자는 tageditor.exe
대신 tageditor-cli.exe
사용하거나 Mintty를 터미널로 사용해야합니다. 자세한 내용은 "Windows 특정 문제"섹션을 확인하십시오.
태그 정보 얻기 및 설정을 보여주는 몇 가지 배쉬 예는 다음과 같습니다.
지정된 디렉토리에 모든 *.m4a 파일의 제목, 앨범 및 아티스트를 표시합니다.
tageditor get title album artist --files /some/dir/*.m4a
지정된 디렉토리에 모든 *.mkv 파일의 모든 지원되는 필드를 표시합니다.
tageditor get --files /some/dir/*.mkv
지정된 (OPU) 파일의 표지를 추출합니다.
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 Comment 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
. 표지 유형과 설명은 선택 사항입니다. 구분자는 경로에 a :
포함하는 경우에 유용한 --cover-type-delimiter
통해 변경 될 수 있습니다.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
파일을 확인하십시오.--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 ++ 유틸리티의 readme 파일을 확인하십시오. QT GUI가 활성화되면 QT 및 Qtutilities도 필요합니다.
C ++ 유틸리티/tagparser/qtutilities를 별도로 구축하지 않으려면 "이 직선 구축"의 지침을 따르십시오. 빌드에 영향을 미치기 위해 CMAKE로 전달할 수있는 다양한 빌드 변수에 대한 문서도 있습니다.
QT GUI는 기본적으로 활성화됩니다. 다음 QT 모듈이 필요합니다 (최신 QT 5 및 QT 6 버전 만 테스트) : Core Concurrent GUI 네트워크 위젯 선언/스크립트 WebEngineWidgets/WebKitWidgets
이전 QT 버전에는 최신 JavaScript 기능에 대한 지원이 부족합니다. JavaScript 기반 이름 변경 도구를 사용하려면 최소 QT 5.12를 사용하는 것이 좋습니다.
사용할 주요 QT 버전을 지정하려면 QT_PACKAGE_PREFIX
설정하십시오 (예 : 추가 -DQT_PACKAGE_PREFIX:STRING=Qt6
에 cmake 인수).
-DWEBVIEW_PROVIDER:STRING=webkit/webengine/none
a qt webkit ( 'Revived'버전과 함께 작동), QT WebEngine 또는 웹보기가 전혀 사용하지 않도록 cmake 인수에 없음. 웹보기가 사용되지 않으면 파일 정보는 일반 트리 뷰를 사용하여 만 표시 할 수 있습니다. 그렇지 않으면 사용자는 웹 페이지와 트리 뷰 중에서 선택할 수 있습니다.-DJS_PROVIDER:STRING=script/qml/none
추가하십시오. JavaScript 엔진이 사용되지 않으면 이름 변경 유틸리티가 비활성화됩니다.CLI 만 필요하면 GUI없이 빌드 할 수 있습니다. 이 경우 QT 종속성 (Qtutilities 포함)이 필요하지 않습니다.
GUI없이 빌드하려면 CMAKE 호출에 다음 매개 변수를 추가하십시오.
-DWIDGETS_GUI=OFF -DQUICK_GUI=OFF
반사 RapidJson의 작은 데모로서 TAG 편집기에는 옵션 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
는 Symlinks를 올바르게 처리하기 위해 Windows에서만 필요합니다. 이를 위해서는 최근 GIT 버전과 Symlinks (NTFS Works)를 지원하는 파일 시스템이 필요합니다. 또한 Windows 개발자 모드를 활성화해야합니다. Symlink Creation에서 "Found Found"오류가 발생하면 저장소 내에서 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
사용하여 해당 동작을 비활성화하십시오.Dark Mode는 Windows 11 하에서 상자에서 작동해야하며 퓨전 스타일을 선택하여 활성화 할 수 있습니다.
태그 편집기는 QT 6 기준으로 PMV2를 지원합니다. QT 문서에 따라 설정을 조정할 수 있습니다.
Copyright © 2015-2024 Marius Kittler
모든 코드는 GPL-2 또는 Later에 따라 라이센스가 부여됩니다.