使用ffmpeg无法将.mp3转换为.m4a

12

我完全意识到使用libfaac存在的法律限制,但这只是为了我的测试目的。

我已经编译了启用了faacffmpeg。所以当我试图将一个.mp3转换为.m4a时,我遇到了以下错误。请提供解决此问题的方法。我尝试了两个不同来源的.mp3,仍然得到相同的错误。

[user@ip-10-161-13-26 ~]$ ffmpeg  -i Kalimba.mp3 -c:a libfaac Kalimba.m4a
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
  built on May  4 2013 09:33:27 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-libfaac --enable-nonfree --disable-yasm
  libavutil      51. 54.100 / 51. 54.100
  libavcodec     54. 23.100 / 54. 23.100
  libavformat    54.  6.100 / 54.  6.100
  libavdevice    54.  0.100 / 54.  0.100
  libavfilter     2. 77.100 /  2. 77.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0. 15.100 /  0. 15.100
[mp3 @ 0x2464680] Header missing
[mp3 @ 0x2463100] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x2463100] Estimating duration from bitrate, this may be inaccurate
Input #0, mp3, from 'Kalimba.mp3':
  Metadata:
    publisher       : Ninja Tune
    track           : 1
    album           : Ninja Tuna
    artist          : Mr. Scruff
    album_artist    : Mr. Scruff
    title           : Kalimba
    genre           : Electronic
    composer        : A. Carthy and A. Kingslow
    date            : 2008
  Duration: 00:05:50.60, start: 0.000000, bitrate: 191 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16, 192 kb/s
    Stream #0:1: Video: mjpeg, yuvj420p, 512x512, 90k tbr, 90k tbn, 90k tbc
    Metadata:
      title           : thumbnail
      comment         : Cover (front)
Output #0, ipod, to 'Kalimba.m4a':
  Metadata:
    publisher       : Ninja Tune
    track           : 1
    album           : Ninja Tuna
    artist          : Mr. Scruff
    album_artist    : Mr. Scruff
    title           : Kalimba
    genre           : Electronic
    composer        : A. Carthy and A. Kingslow
    date            : 2008
    Stream #0:0: Video: none, q=2-31, 128 kb/s, 90k tbn
    Metadata:
      title           : thumbnail
      comment         : Cover (front)
    Stream #0:1: Audio: none, 0 channels, 128 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (mjpeg -> ?)
  Stream #0:0 -> #0:1 (mp3 -> libfaac)
Encoder (codec none) not found for output stream #0:0

MP3文件位于http://db.tt/HtpEBpFU

同时,当我独立使用Faac时,无论文件如何,都会出现奇怪的错误。

Freeware Advanced Audio Coder
FAAC 1.28

Couldn't open input file sample.mp3

请提供完整的、未剪辑的 ffmpeg 输出,以及可能无法转换的示例文件。 - slhck
令人惊讶的是,将其转换为.aac 格式很好用,即几乎相同的命令 ffmpeg -i Kalimba.mp3 -c:a libfaac Kalimba.aac - rahulg
感谢您提供信息。请注意,关于ffmpeg命令行使用的问题不适合在Stack Overflow上讨论,因此我已经投票将您的问题迁移到[ SU ],那里更适合。无需重新提问:它会被移动过去的。 - slhck
1个回答

29
你的输入包含专辑封面,这会导致ffmpeg将其解析为视频,问题就出在这里。
Stream #0:0: Audio: mp3, 44100 Hz, stereo, s16, 192 kb/s
Stream #0:1: Video: mjpeg, yuvj420p, 512x512, 90k tbr, 90k tbn, 90k tbc

它试图转换视频,但在MPEG-4格式(M4A只是另一种名称)中找不到有效的输出编解码器。这是因为您编译ffmpeg时没有包含libx264,在这种情况下,ffmpeg需要它,因为它没有本地的H.264编码器。

无论如何,您需要防止其尝试转换艺术品/视频。将-vn添加到选项中:

ffmpeg  -i Kalimba.mp3 -c:a aac -vn Kalimba.m4a

一些提示:

  • ffmpeg不再支持FAAC。请使用内置的AAC编码器。
  • 将编码输出格式设置为.aac是可行的,因为该输出格式不能包含视频,所以ffmpeg不会尝试首先转换视频/艺术流。

我使用时出现错误“Unknown encoder 'libfaac'”。 - عثمان غني
2
使用另一个编码器,请参见:http://superuser.com/questions/370625/ffmpeg-command-to-convert-mp3-to-aac - slhck
有趣的是,我可以使用ffmpeg 3.4将带有专辑封面的mp3转换为m4a,但是使用从源代码构建的ffmpeg 4.0或更高版本则不行。 我在iPod上使用libfdk_aac以获得最佳结果。 - Pedro A. Aranda
@Pedro 如果你在使用ffmpeg时遇到了具体问题,请提出一个新的问题来寻求帮助。理论上它应该是可以正常工作的。请务必包含所有命令行输出信息。 - slhck
@slhck 您说得完全正确,我只是因为在Ubuntu和MacOSX之间跳转使用rudix包管理器而失去了对自己正在做什么的监控。抱歉给您带来干扰...现在我正在使用ffmpeg 4.1.3,并且可以使用-c:v copy作为视频编解码器从带有ID3v2标签的MP3中复制封面艺术品。在两个系统上都尝试了JPEG文件作为封面艺术品。 - Pedro A. Aranda
截至2017年,libfdk_aac在AAC-LC方面并不总是比aac更好。内置的aac编码器相当出色。参考链接:https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio - copperoxide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接