21

我到处寻找可以让我下载 rtmp 流的 linux 实用程序。不是 flv 视频,而是 MP3 流。我要下载的流的位置就是这种格式。

rtmp://live.site.com/loc/45/std_fc74a6b7f79c70a5f60.mp3

有人知道这样的命令行工具吗?甚至任何接近我要求的东西?

我不想要完整的软件应用程序,如果它可以通过 Shell 或其他方式在 Linux 上运行,那就太好了。

谢谢大家

4

3 回答 3

25

mplayer如果您拥有或vlc使用 RTMP 访问权限编译,则应该执行以下操作之一。

mplayer -dumpstream rtmp://live.site.com/loc/45/std_fc74a6b7f79c70a5f60.mp3

这将生成一个./stream.dump.

vlc -I 虚拟 rtmp://live.site.com/loc/45/std_fc74a6b7f79c70a5f60.mp3 \
    --sout 文件/ts:output.mpg vlc://quit

这将生成一个./output.mpg. 您必须对其进行解复用才能仅提取音频流。

于 2009-06-21T20:15:28.953 回答
13

这个问题很老,但这可以帮助其他有这个疑问的用户。
直接下载,无需任何转换,有两种选择(两个程序的作者相同,行为相同):

  • 实时数据转储。例子:rtmpdump -r "rtmp://host.com/dir/file.flv" -o filename.flv
  • 流媒体。例子:flvstreamer -r "rtmp://od.flash.plus.es/ondemand/14314/plus/plustv/PO770632.flv" -o salida.flv

如果您想同时下载和转换视频,最好的方法是使用 ffmpeg:

ffmpeg -i rtmp://server/live/streamName -acodec copy -vcodec copy dump.mp4
于 2012-05-06T12:25:34.980 回答
12

我认为自之前的一些答案出现以来,情况已经发生了一些变化。至少根据rtmp 维基百科页面。看来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

页面有助于确定如何将 flv 文件转换为其他格式。

于 2012-03-14T02:34:52.070 回答