如何从url录制aac音频?

Posted

技术标签:

【中文标题】如何从url录制aac音频?【英文标题】:How to record aac audio from url? 【发布时间】:2020-07-27 03:52:17 【问题描述】:

我从似乎是 mp3 源的 URL 成功录制音频,发送此命令。

$ ffmpeg -y -t "00:01:00" -i $url1 -c copy url1.mp3
ffmpeg version N-93762-ge384f6f2f9 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7.4.0 (GCC)
configuration:
libavutil      56. 26.100 / 56. 26.100
libavcodec     58. 52.100 / 58. 52.100
libavformat    58. 27.103 / 58. 27.103
libavdevice    58.  7.100 / 58.  7.100
libavfilter     7. 50.100 /  7. 50.100
libswscale      5.  4.100 /  5.  4.100
libswresample   3.  4.100 /  3.  4.100
Input #0, mp3, from 'http://someurl1:1234':

现在,当我尝试从另一个似乎是 AAC 音频源的 URL 录制时出现错误。

$ ffmpeg -y -t "00:01:00" -i $url2 -c copy url2.mp3
ffmpeg version N-93762-ge384f6f2f9 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7.4.0 (GCC)
configuration:
libavutil      56. 26.100 / 56. 26.100
libavcodec     58. 52.100 / 58. 52.100
libavformat    58. 27.103 / 58. 27.103
libavdevice    58.  7.100 / 58.  7.100
libavfilter     7. 50.100 /  7. 50.100
libswscale      5.  4.100 /  5.  4.100
libswresample   3.  4.100 /  3.  4.100
Input #0, aac, from 'http://someurl2:1234':
Metadata:
    icy-notice1     : <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
    icy-notice2     : SHOUTcast DNAS/posix(linux x64) v2.5.5.733<BR>
    icy-name        : some name
    icy-genre       : Talk
    icy-br          : 48
    icy-sr          : 22050
    icy-url         :
    icy-pub         : 0
    StreamTitle     : some title
Duration: N/A, bitrate: 47 kb/s
    Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 47 kb/s
[mp3 @ 0x80003c280] Invalid audio stream. Exactly one MP3 audio stream is required.
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Stream mapping:
Stream #0:0 -> #0:0 (copy)
    Last message repeated 1 times

如果我尝试将其保存为 aac 文件,我会收到以下消息:

$ ffmpeg -y -t "00:01:00" -i $url2 -c copy url2.aac
ffmpeg version N-93762-ge384f6f2f9 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7.4.0 (GCC)
  configuration:
  libavutil      56. 26.100 / 56. 26.100
  libavcodec     58. 52.100 / 58. 52.100
  libavformat    58. 27.103 / 58. 27.103
  libavdevice    58.  7.100 / 58.  7.100
  libavfilter     7. 50.100 /  7. 50.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
Input #0, aac, from 'http://someurl2:1234':
  Metadata:
    icy-notice1     : <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
    icy-notice2     : SHOUTcast DNAS/posix(linux x64) v2.5.5.733<BR>
    icy-name        : some name
    icy-genre       : Talk
    icy-br          : 48
    icy-sr          : 22050
    icy-url         :
    icy-pub         : 0
    StreamTitle     : some title
  Duration: N/A, bitrate: 48 kb/s
    Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 48 kb/s
Output #0, adts, to 'url2.aac':
  Metadata:
    icy-notice1     : <BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>
    icy-notice2     : SHOUTcast DNAS/posix(linux x64) v2.5.5.733<BR>
    icy-name        : some name
    icy-genre       : Talk
    icy-br          : 48
    icy-sr          : 22050
    icy-url         :
    icy-pub         : 0
    StreamTitle     : some title
    encoder         : Lavf58.27.103
    Stream #0:0: Audio: aac (HE-AACv2), 44100 Hz, stereo, fltp, 48 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
Press [q] to stop, [?] for help
size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

当来自 URL 的源音频是 aac 时如何录制? 有没有办法在录制之前识别它是mp3还是aac?提前致谢

【问题讨论】:

在保存到 .aac 时分享完整的尝试日志 网址是公开的,我们可以试试吗? 【参考方案1】:

在您的第一个命令中,使用 -c copy 是错误的,因为您需要将 aac (HE-AACv2) 重新编码为 mp3

见 ffmpeg documentation:

一个特殊的值副本(仅输出),表明流不会被重新编码

我建议你试试这个:

ffmpeg -y -t "00:01:00" -i [stream URL] -codec:a libmp3lame output.mp3

很遗憾,我无法针对您在 cmets (http://dreamsiteradiocp4.com:8120/: Connection refused) 中提供的 URL 对其进行测试,但它成功地与 fmstream.org 中列出的 AAC 流一起使用。

参考:video.stackexchange.com

【讨论】:

以上是关于如何从url录制aac音频?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用麦克风以 AAC 编解码器格式录制音频

iOS录制时如何将PCM缓冲区实时转换为AAC数据?

通过 HTML5 API(RecordJS 或替代方法)将音频录制到 AAC

如何附加到录制的 MPEG4 AAC 文件?

Agora.io 从 LiveStream 录制音频

AVAudioRecorder 录制 AAC/m4a