여러 개의 MP3를 모노로 변환하시나요?

여러 개의 MP3를 모노로 변환하시나요?

모노로 변환하고 싶은 스테레오 MP3가 많이 있습니다. 이를 수행하는 가장 좋은 방법은 무엇입니까? 나는 일괄 처리할 수 있는 것을 선호합니다. 최대한 원본에 가까운 화질을 유지하고 싶습니다. 내 파일의 비트 전송률도 다르기 때문에 일부 파일이 128일 때 모든 파일을 320kpbs로 만들고 싶지 않습니다.

또한 내 전체 라이브러리에서 어떤 파일이 스테레오인지 빠르게 확인할 수 있는 방법이 있나요?

답변1

스테레오에서 모노로 변환하면 다시 인코딩되므로 동일한 비트 전송률을 유지하는 것은 의미가 없습니다. 실제로 128kbit/s MP3를 새로운 128kbit/s MP3로 변환하면 두 번째 MP3가 모노인 경우에도(따라서 동일한 주관적 품질에 대해 더 낮은 비트 전송률이 필요함) 엄청나게 형편없는 품질을 얻을 수 있습니다.

일반적으로 MP3에 대해 VBR(가변 비트 전송률) 설정을 사용합니다. 이 설정은 특정 품질을 목표로 하고 인코더가 필요한 비트 전송률을 설정할 수 있도록 합니다(완전히 조용한 오디오는 고래 노래보다 낮은 비트 전송률이 필요합니다. 고래 노래보다 낮은 비트 전송률이 필요합니다). 덥스텝). 명령줄에서 ffmpeg는 -ac 1다음과 같이 옵션을 사용하여 오디오를 모노로 변환할 수 있습니다.

ffmpeg -i input.mp3 -c:a libmp3lame -q:a 2 -ac 1 output.mp3

보다이 페이지를 사용하는 방법에 대한 안내입니다 -q:a. 해당 페이지의 표는 스테레오 오디오를 겨냥한 것입니다. 실제로 표시되는 비트 전송률은 다소 낮을 것입니다. 일반적으로 3~4를 권장하지만 원본 CD가 아닌 MP3에서 인코딩하는 것이므로 조금 더 높은 수준을 목표로 해야 합니다.

물론 이는 매우 쉽게 자동화될 수 있습니다. Linux/OSX/기타 UNIX 계열에서 MP3 디렉토리를 변환하려면:

for f in *.mp3; do ffmpeg -i "$f" -c:a libmp3lame -q:a 2 -ac 1 mono-"$f"; done

재귀적으로 그렇게 하려면:

find . -type f -name "*.mp3" -exec ffmpeg -i '{}' -c:a libmp3lame -q:a 2 -ac 1 mono-'{}' \;

GNU Parallel과 멀티 코어 머신이 있다면 다음이 유용할 수 있습니다:

find . -type f -name "*.mp3" | parallel ffmpeg -i {} -c:a libmp3lame -q:a 2 -ac 1 mono-{}

답변2

여러 가지 방법이 있지만 실제로 효과가 있는 방법을 안내해 드리겠습니다. 당신이 사용할 수있는대담, 이를 위해 무료로 제공되는 소프트웨어입니다.

이것 좀 봐주세요eHow의 기사MP3를 모노로 변환하는 방법에 대해 알아보세요.

답변3

Lame은 -m 스위치를 사용하여 파일을 모노로 변환할 수 있는데, 메타 태그를 보존할 수 있다는 이점이 있습니다(ffmpeg도 그렇게 할 수 있는지 확실하지 않습니다).

다음은 가변 비트 전송률 품질 옵션 중 하나로 mp3를 트랜스코딩하기 전에 mp3의 비트 전송률을 결정하는 다소 복잡한 예입니다.

고양이 s2mono.sh
#!/bin/bash

mp3파일=$@

mp3크기() {
    du -sk "$1" | awk '{인쇄 $1 * 8 }'
}
mp3길이() {
    id3info "$1" | \
        awk '/=== TLEN/ { if ($NF > 0) { len=int( $NF/1000) }} END {print len}'
}
mp3속도() {
    echo $(( `mp3size "$1"` / `mp3length "$1"` ))
}

비트레이트=`mp3rate "$mp3file"`
if [ $bitrate -gt 155 ]; 그러면 VBR='-V4'; fi
if [ $bitrate -gt 190 ]; 그러면 VBR='-V2'; fi
if [ $bitrate -gt 249 ]; 그러면 VBR='-V0'; fi

에코 다운샘플링 $mp3file
lame --silent $VBR -mm --mp3input "$mp3file" \
      "$(기본 이름 "$mp3file" .mp3 )-mono.mp3"

모든 mp3의 총 크기가 스테레오 형식으로 80MB인 폴더에서 이것을 실행했습니다. 결과 모노 mp3는 32MB만 소비했습니다.

 find . -iname \*mp3  -print0 |xargs -0 -L1 sh s2mono.sh
 (...)

 du -skc *-mono.mp3| tail -n1
 32376   total

 find . -iname \*mp3  |grep -ve '-mono'  |\
     while read f; do du -sk "$f" ;done  |\
     awk '{ tot+=$1} END{print tot}'
 80112

질문의 마지막 부분은 file다음과 같습니다.

 find /R/audio/muzica/_ripped/wav  -exec file {} \+   |grep Monaural

답변4

이것이 내가 찾은 가장 쉬운 방법입니다

나 때문에.mp3; ffmpeg -i "$i" -ac 1 "${i%.} - 모노.mp3"; 완료

동일한 방법을 사용하여 다른 오디오 형식을 mp3로 변환하거나 모노로 변환할 수도 있습니다.

나 때문에.m4b; ffmpeg -i "$i" -ac 1 "${i%.} - 모노.mp3"; 완료

관련 정보