มีวิธีแปลงไฟล์เสียงใน Mac OS X หรือบรรทัดคำสั่งโดยไม่ใช้ iTunes หรือไม่?


96

ตอนนี้ฉันรู้ว่าฉันสามารถใช้ iTunes เพื่อแปลงเพลง แต่มันค่อนข้างเจ็บปวด .. สิ่งที่ฉันถามคือ: มีอะไรใน OS X หรือ UNIX สำหรับการแปลงไฟล์หรือไม่? ตอนนี้ฉันแค่ต้องการแปลง. mp4 เป็น. mp3


2
คุณพิจารณาแพ็คเกจโอเพ่นซอร์สเป็นแอปพลิเคชันบุคคลที่สามหรือไม่ หรือคุณต้องการที่จะยึดติดกับผลิตภัณฑ์ของ Apple ที่มาพร้อมกับระบบปฏิบัติการเท่านั้น คุณสามารถทำให้ชัดเจนในคำถามของคุณ?
Sairam

ฉันต้องการจะทำกับซอฟต์แวร์ที่โหลดล่วงหน้า
James Litewski

3
ความคิดเห็นเกี่ยวกับโซลูชัน FFmpeg (ขาดชื่อเสียง) การควบคุมคุณภาพผลผลิตสำหรับ MP3 สามารถทำได้ผ่านทางcodec:a libmp3lameและqscale:a [0-9]ตัวเลือก (ดูFFmpeg wiki ) ตัวอย่างเช่นในการรับ VBR ในช่วง 140-185 kbit / s ให้ใช้: ffmpeg out.mp3 -i in.mp4 -codec: a libmp3lame -qscale: a 4 สามารถใช้เพื่อลดขนาดไฟล์ MP3 ได้เช่นกัน
trybik

คำตอบ:


16

AppleScripts ของ Doug สำหรับ iTunes

รวมไปถึง

แปลงและส่งออก 2.0

คือชุดของสคริปต์ที่มีประโยชน์ที่คุณสามารถเรียกใช้จาก Finder หรือบรรทัดคำสั่ง แน่นอนว่าพวกเขาทั้งหมดใช้ iTunes เพื่อประมวลผลข้อมูล แต่คุณอาจพบว่าสะดวกกว่าการใช้คำสั่ง GUI และเมาส์ของ iTunes เพื่อแปลงไฟล์


คุณรันสคริปต์นี้อย่างไร ฉันไม่เห็นคำแนะนำในเว็บไซต์
CoolAJ86

คำแนะนำในการติดตั้งและการกำหนดค่าจากผู้จัดหาสคริปต์อยู่ที่นี่: dougscripts.com/itunes/itinfo/downloadfaq.php

7
หมายเหตุสำหรับผู้ที่ไม่ทราบ: นี่ไม่ใช่โซลูชันบรรทัดคำสั่ง มันทำให้ไอคอนขึ้นในแถบเครื่องมือของ iTunes คุณต้องเลือกชุดเพลงจากนั้นเลือกสคริปต์จากเมนูแบบเลื่อนลง มันจะเริ่มต้นที่ 256Kbps สำหรับ AAC มันไม่ได้พูดถึงที่ใดในเอกสาร (ที่ฉันหาได้) แต่คุณสามารถเห็นมันใน screencast ใน 2 หรือ 3 วินาทีที่ผ่านมา
CoolAJ86

161

ผมติดตั้งffmpegผ่าน MacPorts แม้ว่ามันจะยังสามารถใช้ได้ผ่านทางHomebrew ( brew install ffmpeg) หรือดาวน์โหลดไบนารี

ในการแปลงบางอย่างเช่นนั้น (โดยไม่ต้องกังวลกับคุณภาพเสียงที่ฉันไม่รู้อะไรเลย) ฉันแค่ใช้:

ffmpeg -i input.mp4 output.mp3

นี่คือตัวอย่างของวิธีที่คุณจะแปลง.wavไฟล์.mp3จากเว็บไซต์ของพวกเขา:

ffmpeg -i input.wav -codec:a libmp3lame -qscale:a 2 output.mp3 

นี่คือตัวอย่างของวิธีการค้นหา.wavไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 50M, แปลงเป็น mp3 แล้วลบ wav ดั้งเดิม (aka, โหมดแบทช์ - แก้ไขคำสั่ง find เพื่อสร้าง 'batch' ของคุณ)

find . -size +50M -iname *.wav -type f -exec ffmpeg -i {} -codec:a libmp3lame -qscale:a 2 {}.mp3 -y \; -exec /bin/rm {} \;

ขอบคุณสำหรับคำตอบที่ง่าย วิธีการแปลงรายการไฟล์? มันยังมีตัวเลือกอนุกรมหรือขนาน?
Khaled Annajar

ffmpeg ยังทำงานเพื่อแปลง ogg เป็น mp3:ffmpeg -i beep.ogg beep.mp3
rgkobashi

32

OS X ไม่ได้จัดส่งมาพร้อมโปรแกรมเปลี่ยนไฟล์ MP3 นอกเหนือจากตัวเข้ารหัสใน iTunes สำหรับการแปลงเป็นเสียง mpeg4 คุณสามารถใช้คำสั่ง CLI afconvert (afconvert -h สำหรับตัวเลือกที่มี) ตัวอย่างเช่น:

afconvert track.aiff -o track.m4a -q 127 -b 128000 -f m4af -d aac

ความช่วยเหลือสำหรับเครื่องมือนี้สามารถพบได้โดยการเรียกใช้ "afconvert --help" เนื่องจาก "man afconvert" ไม่ได้ชี้ไปที่หน้าคู่มือที่มีประโยชน์


1
+1 แต่ฉันหวังว่าใครบางคนจะเพิ่มตัวชี้ไปยังเอกสารที่ครบถ้วนสมบูรณ์ ฉันได้รับมันเพื่อทำงานผ่านการทดลองและข้อผิดพลาดและการคาดเดา แต่ตัวเลือกมากมายที่ฉันควรจะใช้มีเอกสารสั้นมาก
tripleee

3
หน้าคนอยู่ถัดไปไร้ประโยชน์ ... :-(
Greenonline

1
ฉันพบว่าบทช่วยสอนนี้มีข้อมูล อาร์กิวเมนต์ที่ถูกต้องสำหรับข้อมูลและรูปแบบไฟล์สามารถดูได้โดยใช้afconvert -hf
chb

5

afconvertจะไม่เขียน mp3ไฟล์ แม้ว่ามันจะถูกระบุไว้ในความช่วยเหลือเป็นรูปแบบ:

MacBook-Pro:local user$ afconvert -hf
Audio file and data formats:
    '3gpp' = 3GP Audio (.3gp)
               data_formats: 'Qclp' 'aac ' 'aace' 'aacf' 'aach' 'aacl' 
                             'aacp' 'samr' 
    '3gp2' = 3GPP-2 Audio (.3g2)
               data_formats: 'Qclp' 'aac ' 'aace' 'aacf' 'aach' 'aacl' 
                             'aacp' 'samr' 
    'adts' = AAC ADTS (.aac, .adts)
               data_formats: 'aac ' 'aach' 'aacp' 
    'ac-3' = AC3 (.ac3)
               data_formats: 'ac-3' 
    'AIFC' = AIFC (.aifc, .aiff, .aif)
               data_formats: I8 BEI16 BEI24 BEI32 BEF32 BEF64 UI8 'ulaw' 
                             'alaw' 'MAC3' 'MAC6' 'ima4' 'QDMC' 'QDM2' 
                             'Qclp' 'agsm' 
    'AIFF' = AIFF (.aiff, .aif)
               data_formats: I8 BEI16 BEI24 BEI32 
    'amrf' = AMR (.amr)
               data_formats: 'samr' 
    'm4af' = Apple MPEG-4 Audio (.m4a, .m4r)
               data_formats: 'aac ' 'aace' 'aacf' 'aach' 'aacl' 'aacp' 
                             'alac' 'paac' 
    'm4bf' = Apple MPEG-4 AudioBooks (.m4b)
               data_formats: 'aac ' 'aace' 'aacf' 'aach' 'aacl' 'aacp' 
                             'paac' 
    'caff' = CAF (.caf)
               data_formats: '.mp1' '.mp2' '.mp3' 'QDM2' 'QDMC' 'Qclp' 
                             'Qclq' 'aac ' 'aace' 'aacf' 'aach' 'aacl' 
                             'aacp' 'alac' 'alaw' 'dvi8' 'ilbc' 'ima4' 
                             I8 BEI16 BEI24 BEI32 BEF32 BEF64 LEI16 LEI24 
                             LEI32 LEF32 LEF64 'ms\x00\x02' 'ms\x00\x11' 
                             'ms\x001' 'paac' 'samr' 'ulaw' 
    'MPG1' = MPEG Layer 1 (.mp1, .mpeg, .mpa)
               data_formats: '.mp1' 
    'MPG2' = MPEG Layer 2 (.mp2, .mpeg, .mpa)
               data_formats: '.mp2' 
    'MPG3' = MPEG Layer 3 (.mp3, .mpeg, .mpa)
               data_formats: '.mp3'

หากคุณพยายามใช้:

/usr/bin/afconvert -d '.mp3' -f MPG3 mysong.MP4 -o mysong.mp3

จากนั้นเกิดข้อผิดพลาด:

Error: ExtAudioFileSetProperty ('cfmt') failed ('fmt?')

ตามที่อธิบายไว้ในความเข้าใจผิด MPG3?

'Core Audio สามารถอ่านได้ แต่ไม่สามารถเขียนไฟล์ MP3 ... '

ฉันลงเอยด้วยการใช้คำตอบของzpletanและติดตั้ง ffmpeg

brew install ffmpeg

และสคริปต์ต่อไปนี้อยู่ในไดเรกทอรีเดียวกันกับไฟล์. MP4 ที่ฉันต้องการแปลง นอกจากนี้ยังใช้งานได้กับไฟล์ที่มีช่องว่าง:

#!/bin/sh -x
for f in *.MP4; do
        /usr/local/Cellar/ffmpeg/2.5.4/bin/ffmpeg -i "$f" "$f.mp3"
#        /usr/bin/afconvert -d '.mp3' -f MPG3 "$f" -o "$f.mp3"
        echo "$f converted"
done

รูปแบบที่เปลี่ยนแปลงเล็กน้อยด้านบนเพื่อแก้ไขส่วนขยาย: <code>for i in *.m4a; do echo "${i%.*}.mp3" ; ffmpeg -i "$i" "${i%.*}.mp3"; done
Mahesh Neelakanta

3

นอกจากนี้ยังมีตัวถอดรหัส X Lossless - ตัวถอดรหัสเสียงแบบไม่สูญเสียสำหรับ Mac OS X ที่มีให้เป็นเครื่องมือบรรทัดคำสั่งและแอพ GUI เวอร์ชัน GUI รองรับ MP3 เป็นรูปแบบเอาต์พุต


1

ฉันรวบรวมlibavจากแหล่งที่มาเพื่อตอบสนองวัตถุประสงค์นี้ นี้เป็นชุดเดียวกันติดตั้งโดยเริ่มต้นในรุ่นล่าสุดของ Ubuntu Linux ดังนั้นแบบฝึกหัดสำหรับอูบุนตูทำงานเกือบจะเป็นแบบอยู่ใน OS X libavกับ

นี่คือสิ่งที่ฉันทำเพื่อแปลง MP4 (AAC) เป็น MP3 (ใช้ LAME) โดยใช้บรรทัดคำสั่งและ makefile (เพื่อประโยชน์ของความเท่าเทียมกัน):

for each in *.mp4; do mv "$each" "$(echo "$each" | sed "s/ /./g")"; done
cat << EOF > Makefile
MP4_FILES := $(wildcard *.mp4)
MP3_FILES := ${MP4_FILES:.mp4=.mp3}

all: $(MP3_FILES)

%.mp3: %.mp4
    avconv -i $< -c:a libmp3lame $@
EOF
make -j20

ปรับจำนวนหลัง-jของmakeคำสั่งไปประมาณ 1.5 เท่าจำนวนหน่วยประมวลผลหลักของคุณ เซิร์ฟเวอร์ของฉันมี 24 คอร์ แต่-j24ให้ฉันคอขวด IO ร้ายแรงเอากลับไป-j20และประสิทธิภาพค่อนข้างสมดุล


1

ฉันไม่ได้ใช้มาสิบปีแล้ว แต่ฉันชอบecasoundแปลงไฟล์เสียง

หากคุณได้brewตั้งค่า:

brew install ecasound

ecasound -i input.mp4 -o output.mp3

ฉันไม่ได้พยายามกับ.mp4s ตัวเอง แต่มันควรจะทำงาน

ฉันเพียงแค่ชนเข้ากับคำถามนี้เมื่อมองการแปลงลงในwavflac


1

ด้วย Automator ให้กำหนดบริการ (ขอบคุณ MUSIC BLOG MUSIC BLOG สำหรับแนวคิด): ป้อนคำอธิบายรูปภาพที่นี่

และเชลล์สคริปต์มีดังต่อไปนี้:

    # -----------------------------
    # DESCRIPTION
    #   Export iTunes Music to another destination to get only MP3 files
    #       - Copy MP3 to Destination
    #       - Convert M4A in MP3 in Destination
    #
    # -----------------------------
    # DATE      : 06-Apr-2017
    # AUTHOR    : JF LE MADEC
    # VERSION   : 1.0
    # -----------------------------

    # Local iTunes Directory
    ITUNDIR="$HOME/Music/iTunes/iTunes Media/Music"

    # binary to convert audio files
    AFCONVERT="afconvert"
    # conversion paramaters
    AFCPARAM="-f mp4f -d aac -b 128000"

    # Audio files suffixes
    # Source
    M4ASUF=".m4a"
    # Destination
    MP3SUF=".mp3"

    # for all directories given in arguments copy music
    for destination in "$@"
    do

        # Copy MP3 files
        find "$ITUNDIR" -name "*$MP3SUF" | while read myMp3File; do
            mp3dir=`dirname "$myMp3File"`
            targetDir="$destination${mp3dir#$ITUNDIR}"
            fileName=`basename "$mp3File"`
            [[ -d "$targetDir" ]] || mkdir -p "$targetDir"
            cp -R "$myMp3File" "$targetDir"
        done

        # Convert and copy M4A files (iTunes native)
        find "$ITUNDIR" -name "*$M4ASUF" | while read m4aFile; do
            #afconvert -f mp4f -d aac -b 128000 "./Vianney/Vianney/11 Le Galopin.m4a"  /Users/jflm/Desktop/output2.mp3
            # Get file info
            m4aDir=`dirname "$m4aFile"`
            targetDir="$destination${m4aDir#$ITUNDIR}"
            fileName=`basename -s $M4ASUF "$m4aFile"`
            # Create parent directories if not exist
            [[ -d "$targetDir" ]] || mkdir -p "$targetDir"

            # Convert audio file directly in destination directory
            $AFCONVERT $AFCPARAM "$m4aFile" "$targetDir/$fileName$MP3SUF"

        done
    done

คุณหมายถึงaacหรือmp3ในAFCPARAM="-f mp4f -d aac -b 128000"?
John N

-1

ภายใต้ linux ฉันพบว่า python-audio-tools ทำสิ่งที่ฉันต้องการอย่างแท้จริง น่าเสียดายที่ฉันไม่สามารถเข้ารหัสให้เป็น mp3 ภายใต้ OSXได้ มันอาจใช้ได้ผลสำหรับคุณ มันไม่ได้อยู่ใน OSX แต่มันมีน้ำหนักเบามากและสามารถแปลงระหว่างรูปแบบคู่ใดก็ได้ (หรือเพียงแปลงเป็นไฟล์บีบอัดที่มีรูปแบบเดียวกัน)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.