我认为自从之前的一些答案出现以来,情况已经发生了一些变化。至少根据rtmp wikipedia page。 rtmp 协议规范 似乎对公众开放。为此,您可以使用 2 个工具来完成原始发帖人的要求,rtmpdump 和 ffmpeg。下面是我下载发送音频播客的 rtmp 流的方法。
第 1 步 - 下载流
我使用工具rtmpdump 来完成这项工作。像这样:
% rtmpdump -r rtmp://url/to/some/file.mp3 -o /path/to/file.flv
RTMPDump v2.3
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
INFO: Connected...
Starting download at: 0.000 kB
28358.553 kB / 3561.61 sec
Download complete
步骤 #2 - 将 flv 文件转换为 mp3
好的,现在您已经获得了流的本地副本,file.flv。您可以使用ffmpeg 进一步询问文件,也可以只提取音频部分。
% ffmpeg -i file.flv
....
[flv @ 0x25f6670]max_analyze_duration reached
[flv @ 0x25f6670]Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'file.flv':
Duration: 00:59:21.61, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 1 channels, s16, 64 kb/s
从上面的输出我们可以看到 file.flv 包含一个流,只是音频,它是 mp3 格式,它是一个通道。要将其提取到正确的 mp3 文件,您可以再次使用 ffmpeg:
% ffmpeg -i file.flv -vn -acodec copy file.mp3
....
[flv @ 0x22a6670]max_analyze_duration reached
[flv @ 0x22a6670]Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'file.flv':
Duration: 00:59:21.61, start: 0.000000, bitrate: 64 kb/s
Stream #0.0: Audio: mp3, 44100 Hz, 1 channels, s16, 64 kb/s
Output #0, mp3, to 'file.mp3':
Metadata:
TSSE : Lavf52.64.2
Stream #0.0: Audio: libmp3lame, 44100 Hz, 1 channels, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
size= 27826kB time=3561.66 bitrate= 64.0kbits/s
video:0kB audio:27826kB global headers:0kB muxing overhead 0.000116%
上述命令会将音频流复制到一个文件file.mp3中。你也可以像这样将它解压到一个 wav 文件中:
ffmpeg -i file.flv -vn -acodec pcm_s16le -ar 44100 -ac 2 file.wav
page 在确定如何将 flv 文件转换为其他格式时很有用。