昨天要上传一首歌到点电网,结果搞不定转换,因为点电网只支持mp3 格式的上传,而我平时听的都是m4a 的。

来解释下我为什么不需要在Ubuntu 下将无损格式转换为其他。我听歌都是这么听,首先,我听到一首歌很好听,搜索到演唱者、专辑名称,搜索这张专辑的无损下载。如果有无损,下载无损;没有无损,找320kbps 的mp3 ;没有的话找192kbps 的mp3; 要是连这种音质都无法满足,那这歌太偏了,或者是刚刚出来还没有人抓轨,要么去买CD 要么等一段时间。如果下载的不是无损,直接放手机里;如果是无损,虚拟机win 系统用Foobar2000 打开,用NeroAAC 编码器转换到双通道512kbps aac 文件(m4a 扩展名),放到手机里。

我为什么要开虚拟机,原因也在这里,在Ubuntu 下我不知道怎么使用NeroAAC Encoder ==。 抱歉我找不到任何使用的提示。而使用faac 码率最高只有320kbps 。虽然据说faac 的算法能更好地还原低音,但我也没听出来区别,倒是码率低的硬伤无法弥补。

我尝试了一个小时,搜索到的方法没有一个能解决我的问题。要么就是mencoder ,要么就是ffmpeg 。我遇到了下面的情况。

ffmpeg -i 魔法の人.m4a -acodec mp3 魔法の人.mp3
# 输出结果
# ffmpeg version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:52:09 with gcc 4.6.3
# *** THIS PROGRAM IS DEPRECATED ***
# This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
# Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '魔法の人.m4a':
#   Metadata:
#     major_brand     : mp42
#     minor_version   : 0
#     compatible_brands: M4A mp42isom
#     creation_time   : 2012-08-30 05:27:37
#     track           : 2/12
#     genre           : JPop
#     album           : やさしい花の咲く場所
#     artist          : 奥華子
#     comment         : YEAR: 2006
#     title           : 魔法の人
#     encoder         : Nero AAC codec / 1.5.4.0
#     date            : 2006
#   Duration: 00:04:39.12, start: 0.000000, bitrate: 477 kb/s
#     Chapter #0.0: start 0.059501, end 279.127075
#     Metadata:
#       title           : 魔法の人
#     Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 476 kb/s
#     Metadata:
#       creation_time   : 2012-08-30 05:27:37
# Unknown encoder 'mp3'

不管怎么更换acodec 参数,结果都是一样的,ffmpeg 根本找不到对应的mp3 编码器。使用mencoder 就会出现下面这种情况。

mencoder -o 魔法の人.mp3 -ovc frameno -oac mp3lame -lameopts cbr:br=320 -of rawaudio 魔法の人.m4a
# MEncoder svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team
# success: format: 0  data: 0x0 - 0xfe563c
# libavformat version 53.21.0 (external)
# Mismatching header version 53.19.0
# libavformat file format detected.
# [lavf] stream 0: audio (aac), -aid 0, -alang und
# Video stream is mandatory!
# 
# Exiting...

而实际上只要使用 mplayer 将源文件 dump 成 wav 格式,再使用 lame 编码成 mp3 就可以了,简单有效。

mplayer 魔法の人.m4a -ao pcm
# MPlayer svn r34540 (Ubuntu), built with gcc-4.6 (C) 2000-2012 MPlayer Team
# mplayer: could not connect to socket
# mplayer: No such file or directory
# Failed to open LIRC support. You will not be able to use your remote control.
# 
# Playing 魔法の人.m4a.
# libavformat version 53.21.0 (external)
# Mismatching header version 53.19.0
# libavformat file format detected.
# [lavf] stream 0: audio (aac), -aid 0, -alang und
# Clip info:
#  major_brand: mp42
#  minor_version: 0
#  compatible_brands: M4A mp42isom
#  creation_time: 2012-08-30 05:27:37
#  track: 2/12
#  genre: JPop
#  album: やさしい花の咲く場所
#  artist: 奥華子
#  comment: YEAR: 2006
#  title: 魔法の人
#  encoder: Nero AAC codec / 1.5.4.0
#  date: 2006
# Load subtitles in ./
# ==========================================================================
# Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
# libavcodec version 53.35.0 (external)
# Mismatching header version 53.32.2
# AUDIO: 44100 Hz, 2 ch, s16le, 476.2 kbit/33.74% (ratio: 59526->176400)
# Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
# ==========================================================================
# [AO PCM] File: audiodump.wav (WAVE)
# PCM: Samplerate: 44100Hz Channels: Stereo Format s16le
# [AO PCM] Info: Faster dumping is achieved with -benchmark -vc null -vo null -ao pcm:fast
# [AO PCM] Info: To write WAVE files use -ao pcm:waveheader (default).
# AO: [pcm] 44100Hz 2ch s16le (2 bytes per sample)
# Video: no video
# Starting playback...
# A: 279.1 (04:39.1) of 279.1 (04:39.1)  0.2% 
# 
# 
# Exiting... (End of file)
# 
lame audiodump.wav -o 魔法の人.mp3 -b 320
# LAME 3.99.3 64bits (http://lame.sf.net)
# Using polyphase lowpass filter, transition band: 20094 Hz - 20627 Hz
# Encoding audiodump.wav to 魔法の人.mp3
# Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (4.4x) 320 kbps qval=3
#     Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA 
#  10687/10687 (100%)|    0:10/    0:10|    0:10/    0:10|   27.695x|    0:00 
# --------------------------------------------------------------------------------------------------------------# ----------------------------------------
#    kbps        LR    MS  %     long switch short %
#   320.0       47.3  52.7        97.2   1.6   1.3
# Writing LAME Tag...done
# ReplayGain: -7.7dB