【问题标题】:RTMP: Is there such a linux command line tool?RTMP:有这样的linux命令行工具吗?
【发布时间】:2010-11-04 17:00:31
【问题描述】:

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

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

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

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

谢谢大家

【问题讨论】:

    标签: linux shell command-line utilities rtmp


    【解决方案1】:

    如果您使用 RTMP 访问编译了 mplayervlc,则应该执行以下操作。

    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。您必须对其进行解复用才能仅提取音频流。

    【讨论】:

    • 太好了,谢谢!我已经安装了 mplayer,但我不确定如何添加或包含 rtmp 支持。有没有我可以用来安装它的命令。我正在使用 Fedora 10,yum 作为安装程序。
    • 嗯,其实主线mplayer好像不支持RTMP。除非您想自己尝试修补和编译 mplayer,否则我建议您改用 VLC。
    【解决方案2】:

    我认为自从之前的一些答案出现以来,情况已经发生了一些变化。至少根据rtmp wikipedia pagertmp 协议规范 似乎对公众开放。为此,您可以使用 2 个工具来完成原始发帖人的要求,rtmpdumpffmpeg。下面是我下载发送音频播客的 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 文件转换为其他格式时很有用。

    【讨论】:

      【解决方案3】:

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

      • RTMPDump。示例:rtmpdump -r "rtmp://host.com/dir/file.flv" -o filename.flv
      • flvstreamer。示例: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-07-09
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多