Development Tip

모든 메타 데이터를 유지하면서 ffmpeg를 사용하여 .flac를 .mp3로 변환

yourdevel 2020. 10. 25. 13:09
반응형

모든 메타 데이터를 유지하면서 ffmpeg를 사용하여 .flac를 .mp3로 변환


모든 메타 데이터를 유지하면서 .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

위의 완벽한 대답. 이 명령을 사용하여 하위 트리의 모든 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 0ffmpeg최고 품질의 VBR을 사용하도록 지시 합니다.

그러나, ffmpeg에서 내 앨범 아트 트랜스 코딩 된 jpegpng커버 아트의 크기를 증가.

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 파일을 저장합니다.


한 줄로 모든 .flac파일을 .mp3단일 디렉토리 로 변환 하여 대부분의 메타 데이터를 유지 합니다.

for file in *.flac; do ffmpeg -i $file -q:a 0 ${file:r}.mp3; done

(참고 : ${file:r}주어진 파일 경로의 확장자를 제거합니다 . )

ffmpeg : flac에서 mp3로


나는 이것이 요청되지 않았다는 것을 알고 있지만 이것이 수행 된 이유 중 하나 (적어도 내가하고 싶었던 것)를 고려하면 FLAC를 지원하지 않는 Apple iTunes로 음악을 가져올 수 있기 때문입니다. 이 경우 FLAC를 Apple의 무손실 형식 인 m4a로 변환하는 것이 더 합리적입니다. 이 명령을 사용하여 비슷한 파일 크기를 유지하면서 현재 폴더의 모든 파일을 변환했습니다.

find . -name "*.flac" -exec ffmpeg -i {} -map_metadata 0 -acodec alac {}.m4a \;


flac2mp3.sh 스크립트는 ffmpegFLAC 파일의 폴더 트리를 MP3 파일의 다른 폴더 트리로 변환하는 데 사용 합니다. 표지 아트가있는 경우 포함됩니다. CORES한 번에 여러 파일을 변환하는 백그라운드 작업을 생성 하도록 변수를 설정할 수 있습니다 .

참고 URL : https://stackoverflow.com/questions/26109837/convert-flac-to-mp3-with-ffmpeg-keeping-all-metadata

반응형