[ffmpeg] 모든 메타 데이터를 유지하면서 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 \;