Czy istnieje sposób na konwersję plików audio w systemie Mac OS X lub wierszu poleceń bez korzystania z iTunes?

96

Teraz wiem, że mogę konwertować muzykę za pomocą iTunes. Ale jest to dość bolesne. Pytam tylko: czy jest coś wbudowanego w OS X lub UNIX do konwersji plików? Teraz chcę po prostu przekonwertować .mp4 na .mp3 ..

James Litewski
źródło
2
Czy uważasz pakiety open source za aplikacje innych firm? A może chcesz pozostać przy produktach Apple dostarczanych wyłącznie z systemem operacyjnym. Czy możesz to wyjaśnić w swoim pytaniu?
Sairam
Chciałbym to zrobić z fabrycznie załadowanym oprogramowaniem.
James Litewski
3
Komentarz do rozwiązania FFmpeg (brak reputacji). Kontrolę jakości wyjściowej plików MP3 można przeprowadzić za pomocą opcji codec:a libmp3lamei qscale:a [0-9](patrz wiki FFmpeg ). Na przykład, aby uzyskać VBR w zakresie 140-185 kbit / s, użyj: ffmpeg out.mp3 -i in.mp4 -codec: a libmp3lame -qscale: a 4 Można tego również użyć do zmniejszenia rozmiaru plików MP3.
trybik

Odpowiedzi:

16

Doug's AppleScripts dla iTunes

włącznie z

Konwertuj i eksportuj 2.0

to zbiór przydatnych skryptów, które można uruchomić z Findera lub wiersza poleceń. Oczywiście wszyscy używają iTunes do przetwarzania danych, ale może być wygodniejsze niż używanie GUI iTunes i poleceń myszy do konwersji plików.


źródło
Jak uruchomić ten skrypt? Nie widzę instrukcji na stronie.
CoolAJ86,
Instrukcje instalacji i konfiguracji od faceta dostarczającego skrypty znajdują się tutaj: dougscripts.com/itunes/itinfo/downloadfaq.php
7
Uwaga dla tych, którzy nie wiedzą: nie jest to rozwiązanie wiersza poleceń. Wyświetla ikonę na pasku narzędzi iTunes. Musisz wybrać zbiór piosenek, a następnie skrypt z menu rozwijanego. Domyślnie będzie to 256 Kb / s dla AAC. Nigdzie nie wspomniano w dokumentacji (którą mogłem znaleźć), ale możesz to zobaczyć w screencastie w ciągu ostatnich 2 lub 3 sekund.
CoolAJ86,
161

Zainstalowałem ffmpegprzez MacPorts, chociaż jest on również dostępny przez Homebrew ( brew install ffmpeg) lub pobierz plik binarny .

Aby przekonwertować coś takiego (bez martwienia się o jakość dźwięku, o której nic nie wiem), używam:

ffmpeg -i input.mp4 output.mp3

Oto przykład, jak przekonwertować .wavplik .mp3z jego strony internetowej :

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

Oto przykład, jak znaleźć wszystkie .wavpliki większe niż 50M, przekonwertować je na mp3, a następnie usunąć oryginalne wav (inaczej tryb wsadowy - zmień polecenie find, aby utworzyć „wsad”)

find . -size +50M -iname *.wav -type f -exec ffmpeg -i {} -codec:a libmp3lame -qscale:a 2 {}.mp3 -y \; -exec /bin/rm {} \;
zpletan
źródło
Dzięki za łatwą odpowiedź. Jak przekonwertować listę plików? Czy ma również opcje szeregowe lub równoległe?
Khaled Annajar
ffmpeg działa również w celu konwersji ogg na mp3:ffmpeg -i beep.ogg beep.mp3
rgkobashi
32

OS X nie jest dostarczany z żadnym koderem MP3 oprócz tego w iTunes. Do konwersji na dźwięk MPEG4 można użyć komendy CLI afconvert (afconvert -h dla dostępnych opcji). Na przykład:

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

Pomoc dla tego narzędzia można znaleźć, uruchamiając polecenie „afconvert --help”, ponieważ „man afconvert” nie wskazuje przydatnej strony podręcznika.

Gerry
źródło
1
+1, ale naprawdę chciałbym, aby ktoś dodał wskaźnik do wyczerpującej dokumentacji. Zmusiłem go do pracy na zasadzie prób i błędów oraz zgadywania, ale wiele opcji, z których być może powinienem skorzystać, zostało bardzo krótko opisanych.
tripleee
3
Strona mężczyzna jest obok bezużyteczny ... :-(
Greenonline
1
Uważam, że ten samouczek ma charakter informacyjny. Prawidłowe argumenty dla formatów danych i plików można zobaczyć, używającafconvert -hf
chb
5

afconvertnie napisze. mp3akta. Mimo że jest wymieniony w pomocy jako format:

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'

Jeśli spróbujesz go użyć:

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

wtedy pojawia się błąd:

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

Jak wyjaśniono na afconvert MPG3?

„Core Audio potrafi czytać, ale nie pisać, pliki MP3 ...”

I skończył przy użyciu zpletan „s odpowiedź i zainstalowany ffmpeg

brew install ffmpeg

oraz następujący skrypt, umieszczony w tym samym katalogu co pliki .MP4, które chcę przekonwertować. Działa również w przypadku plików ze spacjami:

#!/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
Greenonline
źródło
Niewielka odmiana powyższego, na przykład w celu naprawy rozszerzeń: <kod>for i in *.m4a; do echo "${i%.*}.mp3" ; ffmpeg -i "$i" "${i%.*}.mp3"; done
Mahesh Neelakanta
3

Istnieje również X Lossless Decoder - bezstratny dekoder audio dla systemu Mac OS X dostępny jako narzędzie wiersza poleceń i aplikacja GUI. Wersja GUI obsługuje MP3 jako format wyjściowy.

ralf
źródło
1

Kompilowałem libavze źródła, aby służyć temu celowi. Jest to ten sam pakiet instalowany domyślnie w nowszych wersjach Ubuntu więc tutoriale dla Ubuntu działa niemal jak jest na OS X z libav.

Oto coś, co robię, aby przekonwertować MP4 (AAC) na MP3 (używając LAME) za pomocą wiersza poleceń i makefile (ze względu na równoległość):

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

Dostosować liczbę po -jz makepolecenia do około 1,5x numeru rdzenia procesora. Mój serwer miał 24 rdzenie, ale -j24dał mi poważne wąskie gardło we / wy, ograniczyłem go z powrotem -j20i wydajność jest całkiem dobrze wyważona.

Maxthon Chan
źródło
1

Nie korzystałem z niego przez dekadę, ale uwielbiam ecasoundkonwertować pliki dźwiękowe.

Jeśli brewskonfigurowałeś:

brew install ecasound

ecasound -i input.mp4 -o output.mp3

Sam tego nie próbowałem, .mp4ale powinno działać .

Ja po prostu wpadł na to pytanie, patrząc na konwersję wavdo flac.

guaka
źródło
1

Za pomocą automatyzatora zdefiniuj usługę (Dzięki BLOG MUZYCZNY DIGITALHOBBIT za pomysł): wprowadź opis zdjęcia tutaj

A skrypt powłoki jest następujący:

    # -----------------------------
    # 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
JFLM
źródło
Miałeś na myśli aacczy mp3w AFCPARAM="-f mp4f -d aac -b 128000"?
John N,
-1

Pod Linuksem, python-audio-tools robi dokładnie to, co chcę. Niestety nie udało mi się przekonać go do kodowania do formatu MP3 w OSX . Może ci się to przydać. W ogóle nie jest wbudowany w OSX, ale jest bardzo lekki i może konwertować pomiędzy dowolną parą formatów (lub po prostu konwertować na bardziej skompresowany plik o tym samym formacie).

intuicyjny
źródło