모든 메타 데이터를 유지하면서 .flac를 .mp3 로 변환하려면 어떻게해야합니까 (즉, .flac 파일의 Vorbis 주석을 .mp3의 ID3v2 메타 데이터로 변환)?
모든 메타 데이터를 유지하면서 .flac를 .mp3 로 변환하려면 어떻게해야합니까 (즉, .flac 파일의 Vorbis 주석을 .mp3의 ID3v2 메타 데이터로 변환)?
답변:
다음 명령은 .mp3 (320kbps)에서 고품질을 유지하고 .flac 파일의 메타 데이터는 .mp3 파일에 포함될 수있는 ID3v2 형식으로 변환됩니다.
ffmpeg -i input.flac -ab 320k -map_metadata 0 -id3v2_version 3 output.mp3
ffmpeg
3.2는을 지정할 필요없이 FLAC에서 ID3v2로 메타 데이터를 자동으로 복사 -map_metadata 0 -id3v2_version 3
하지만 ID3v1 태그로 복사하지는 않습니다. 이를 위해 별도의 도구를 사용합니다.
위의 완벽한 대답. 이 명령을 사용하여 하위 트리의 모든 FLAC 파일을 iTunes에 추가하기 위해 find와 함께 사용합니다.
find . -name "*.flac" -exec ffmpeg -i {} -ab 160k -map_metadata 0 -id3v2_version 3 {}.mp3 \;
결과 파일을 iTunes에 자동으로 추가하려면 다음을 사용하여 iTunes 가져 오기 디렉토리를 가져옵니다.
find ~/Music/ -name "Automatically Add*"
결과 예
/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized
그런 다음 예를 실행하십시오.
find . -name "*.mp3" -exec mv {} "/Users/sir/Music//iTunes/iTunes Media/Automatically Add to iTunes.localized/" \;
변환 된 모든 트랙을 iTunes에 자동으로 추가하려면.
약간의 공간을 절약하고 싶다면 hydrogenaud.io 의 추천을 시도해보세요 .
매우 높은 품질 : 최적의 파일 크기와 고음질, 가정, 또는 조용한 청취는,
-V0 (~245 kbps)
,-V1 (~225 kbps)
,-V2 (~190 kbps)
또는-V3 (~175 kbps)
권장됩니다. 이러한 VBR 설정은 일반적으로 투명한 결과를 생성합니다. 이러한 사전 설정간에 청각 적 차이가있을 수 있지만 거의 없습니다.
출처 : http://wiki.hydrogenaud.io/index.php?title=LAME
ffmpeg에서이 옵션을 사용하려면 -q:a 0
별칭을 사용해야합니다 .
-qscale:a
(또는 별칭-q:a
)을 사용 하여 품질을 제어합니다 . 값은 인코더에 따라 다르므로 libmp3lame의 경우 범위는 0-9이며 값이 낮을수록 품질이 높습니다. 0-3은 일반적으로 투명한 결과를 생성하고 4 (기본값)는 지각 적 투명도에 가까워 야하며 6은 "허용되는"품질을 생성합니다. 이 옵션-qscale:a
은-V
독립 실행 형 lame 명령 줄 인터페이스 도구 의 옵션 에 매핑됩니다 .
출처 : https://trac.ffmpeg.org/wiki/Encode/MP3
ID3v1 메타 태그도 원한다면 -write_id3v1 1
매개 변수를 추가해야합니다 .
그래서 내 마지막 명령은 다음과 같습니다.
ffmpeg.exe -y -i input.flac -codec:a libmp3lame -q:a 0 -map_metadata 0 -id3v2_version 3 -write_id3v1 1 output.mp3
다음 명령을 테스트하여 infile.flac
파일을 다음으로 변환 했습니다 outfile.mp3
.
ffmpeg -i infile.flac -q:a 0 outfile.mp3
Ubuntu 16.04부터 위의 명령은 메타 데이터를 복사하는 것 같습니다 (대부분? 전부?).
-q:a 0
ffmpeg
최고 품질의 VBR을 사용하도록 지시 합니다.
그러나, ffmpeg
에서 내 앨범 아트 트랜스 코딩 된 jpeg
에 png
커버 아트의 크기를 증가.
Stream mapping:
Stream #0:1 -> #0:0 (mjpeg (native) -> png (native))
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
(위의 변환이 작동 방식을 고려할 때ffmpeg
의미가 있다고 생각 합니다 .)
약간의 파고를 한 후 -c:v copy
비디오 스트림을 트랜스 코딩하는 대신 복사하도록 지정하는 옵션을 찾았습니다 . 전체 명령은 다음과 같습니다.
ffmpeg -i infile.flac -c:v copy -q:a 0 outfile.mp3
위 명령의 결과는 다음과 같습니다.
Stream mapping:
Stream #0:1 -> #0:0 (copy)
Stream #0:0 -> #0:1 (flac (native) -> mp3 (libmp3lame))
중첩 폴더에있는 모든 flac 파일을 mp3에서 재귀 적으로 변환하려면 다음 명령을 사용했습니다.
find '~/Music/' -iname '*.flac' -exec bash -c 'D=$(dirname "{}"); B=$(basename "{}"); mkdir "$D/mp3/"; ffmpeg -i "{}" -ab 320k -map_metadata 0 -id3v2_version 3 -acodec libmp3lame "$D/mp3/${B%.*}.mp3"' \;
flac 파일이있는 폴더 안에 "mp3"라는 이름의 폴더가 생성되고, mp3 폴더 안에는 이전 파일 확장자를 유지하지 않고 320kbps의 비트 전송률로 상대 mp3 파일을 저장합니다.
$file
같은 변수를 인용하십시오 "$file"
.
:r
zsh
에서 작동하지 않는 수정자인 것 같습니다 bash
. 배쉬에서는 대체 할 수 "${file:r}.mp3"
와 함께 "${file%.flac}.mp3"
.
${file%.*}
나는 이것이 요청되지 않았다는 것을 알고 있지만 이것이 수행 된 이유 중 하나 (적어도 내가하고 싶었던 것)를 고려하면 FLAC를 지원하지 않는 Apple iTunes로 음악을 가져올 수 있기 때문입니다. 이 경우 FLAC를 Apple의 무손실 형식 인 m4a로 변환하는 것이 더 합리적입니다. 이 명령을 사용하여 비슷한 파일 크기를 유지하면서 현재 폴더의 모든 파일을 변환했습니다.
find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;
ffmpeg
에는 Super User 에서 CLI 사용에 대해 질문 해야합니다 . Stack Overflow 는 프로그래밍과 관련된 질문에만 해당됩니다. 또한 FLAC는 공식적으로 Vorbis 주석 만 지원 하므로 "keep"대신 ID3v2로 변환하고 싶다고 가정합니다.