여러 개의 MP3(수천 개)에 포함된 앨범 아트를 제거하고 싶지만 이를 수행하는 명령줄 방법을 찾을 수 없습니다. art를 추가할 수 lame
있고 거의 모든 다른 태그를 추가하거나 제거할 수 있지만 id3tag
다음을 수행할 방법을 찾을 수 없습니다.
for file in **/*.mp3 do <remove image command> $file; done
내가 이것에 무엇을 넣을 수 있는지 아는 사람이 있나요 <remove image command>
?
답변1
좋은 해결책은 없는 것 같습니다. 제가 생각해낸 최선의 방법은 ffmpeg를 사용하여 새 파일을 빠르게 만드는 것입니다. @awesome14가 제공한 명령이 내 시스템에서 작동하지 않았습니다(대부분 작동했지만 오류가 많이 발생하고 노래가 복사되지 않았습니다). 이것이 내가 생각해낸 명령이다.
for song in **/*.mp3
do NAME=$(echo ${song%/*} | sed -e 's|[/ ]|-|g’)
ffmpeg -y -i $song -vn -c copy /path/NOART/"$NAME-"${song##*/};
done
이것은 bash5 또는 zsh 쉘에서 작동합니다.
**/*.mp3
현재 디렉터리 아래의 모든 디렉터리에서 .mp3와 일치하는 모든 파일echo ${song%/*} | sed -e 's|[/ ]|-|g’
파일 이름이 아닌 경로 부분의 모든 슬래시와 공백을 대시로 변환합니다.—vn -c copy
영상(영상번호)은 복사하지 마시고, 수정되지 않은 파일을 복사하세요./path/NOART/"$NAME-"${song##*/}
NAME 변수에 설정된 파일 이름과 $song의 기본 이름을 사용하여 경로에 저장합니다.출력 파일 이름은 "10Cc-Look-Hear-Dressed To Kill.mp3"과 유사합니다.
이 작업의 또 다른 장점은 노래에서 모든 메타데이터를 제거하지 않고 "비디오"(이 경우 앨범 표지 아트)만 제거한다는 것입니다.
답변2
답변3
이를 설치 kid-cli
하고 CLI에서 메타데이터 태그를 변경하는 데 사용할 수 있습니다. 이 질문을 보기 전에는 앨범 아트를 제거하는 데 이 방법을 사용한 적이 없었지만 다음과 같은 방법을 알아낸 것 같습니다.
for file in **/*.mp3 do (sleep 2; printf %s\\n 'set "Picture:" ""' save exit) | kid3-cli $file; done
cli 프로그램이지만 kid3-cli는 대화형 사용을 위해 만들어졌습니다. 따라서 명령은 대화형으로 입력해야 합니다. 또한 어떤 이유로든 지연이 없으면 위 명령이 작동하지 않습니다. 처리할 파일이 많은 경우 여러 파일에 대해 명령을 병렬로 실행하여 이 문제를 완화할 수 있습니다.
for file in **/*.mp3 do (:; (sleep 2; printf %s\\n 'set "Picture:" ""' save exit) | kid3-cli $file)&; done; wait
또는:
(sleep 2; printf %s\\n 'set "Picture:" ""' save exit; sleep 2) | kid3-cli *.mp3; done
후자의 경우 kid3-cli를 지연해야 합니다.뒤쪽에명령도 파이프로 전달되었습니다. 이유는 모르겠지만 적어도 모든 파일을 한 번에 처리할 수는 있습니다.
추신: 이것을 테스트할 mp3 파일이 없어서 ogg/vorbis 파일을 사용했습니다. ogg는 mp3(id3)와 다른 태깅 시스템(vorbis 주석)을 사용하므로 두 형식 모두에 동일한 효과를 줄 수 있습니다. 그러나 이것은 어쨌든 mp3에 *작동해야 합니다*.
답변4
설치하다아이 3
$ pacman -Ss kid3
community/kid3 3.9.1-2 [installed]
An MP3, Ogg/Vorbis and FLAC tag editor, KDE version
스크립트를 실행합니다.
#!/bin/bash
for filename in ./*.mp3; do
echo $filename
kid3-cli -c 'set Picture ""' $filename
done