有没有一种方法可以在不使用iTunes的情况下在Mac OS X或命令行中转换音频文件?


96

现在,我知道可以使用iTunes转换音乐了。但是,这确实很痛苦。.我要问的是:OS X或UNIX是否内置任何用于转换文件的内容?现在,我只想将.mp4转换为.mp3 ..


2
您是否将开源软件包视为第三方应用程序?还是要坚持只随操作系统一起提供的Apple产品。您能在问题中阐明这一点吗?
Sairam

我想用预装的软件来做。
James Litewski

3
对FFmpeg解决方案的评论(缺乏声誉)。可以通过codec:a libmp3lameqscale:a [0-9]选项完成MP3的输出质量控制(请参阅FFmpeg wiki)。例如,要使VBR处于140-185 kbit / s的范围内,请使用:ffmpeg out.mp3 -i in.mp4 -codec:a libmp3lame -qscale:a 4这也可以用于减小MP3文件的大小。
trybik 2014年

Answers:


16

道格的iTunes AppleScripts

包含

转换和导出2.0

是可以从Finder或命令行运行的有用脚本的集合。当然,它们都使用iTunes处理数据,但是您可能会发现它比使用iTunes的GUI和鼠标命令转换文件更方便。


您如何运行此脚本?我在网站上看不到任何说明。
CoolAJ86

提供脚本的人员的安装和配置说明在此处:dougscripts.com/itunes/itinfo/downloadfaq.php

7
注意那些不知道的人:这不是命令行解决方案。它在iTunes工具栏中显示一个图标。您必须选择一组歌曲,然后从下拉菜单中选择脚本。对于AAC,它将默认为256Kbps。(我可以找到)在文档的任何地方都没有提到它,但是您可以在最近2到3秒钟的截屏视频中看到它。
CoolAJ86

161

ffmpeg通过MacPorts进行了安装,尽管它也可以通过Homebrewbrew 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(又名批处理模式-更改find​​命令以创建“批处理”)

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

感谢您的简单答案。如何转换文件列表?它还具有串行或并行选项吗?
哈立德·安娜哈

ffmpeg 也可以将ogg转换为mp3:ffmpeg -i beep.ogg beep.mp3
rgkobashi

32

除了iTunes中的MP3编码器外,OS X还没有附带任何MP3编码器。要转换为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,但我真的希望有人会添加一个指向详尽文档的指针。我已经通过反复试验和猜测来获得了它的工作,但是我本应该使用的许多选择都有非常简短的记录。
2013年

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?')

afconvert 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无损解码器-Mac OS X的无损音频解码器,可作为命令行工具和GUI应用程序使用。GUI版本支持MP3作为输出格式。


1

libav从源代码编译以实现此目的。这是在最新版本的Ubuntu Linux上默认安装的同一软件包,因此Ubuntu的教程几乎可以在OS X上按原样使用libav

这是我使用命令行和Makefile(出于并行性)将MP4(AAC)转换为MP3(使用LAME)的操作:

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

-jmake命令后的数字调整为处理器核心数的1.5倍左右。我的服务器有24个内核,但-j24给了我严重的IO瓶颈,将其限制了下来,-j20并且性能相当平衡。


1

我已经十年没有使用它了,但我喜欢ecasound转换声音文件。

如果已brew设置:

brew install ecasound

ecasound -i input.mp4 -o output.mp3

我还没有亲自尝试过,.mp4但是应该可以

希望转换的时候我只是碰到了这个问题wavflac


1

使用自动化器,定义服务(感谢DIGITALHOBBIT的MUSIC BLOG的想法): 在此处输入图片说明

和shell脚本如下:

    # -----------------------------
    # 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还是mp3AFCPARAM="-f mp4f -d aac -b 128000"
约翰N

-1

在linux下,我发现python-audio-tools完全符合我的要求。不幸的是,我无法在OSX下将其编码为mp3。不过,它可能对您有用。它根本不是内置在OSX中的,但是它非常轻巧,可以在几乎任何一对格式之间进行转换(或者只是转换为具有相同格式的更压缩的文件)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.