2009-06-21 11 views
18

Ich habe überall nach einem Linux-Dienstprogramm gesucht, mit dem ich rtmp-Streams herunterladen kann. Nicht FLV-Video, sondern MP3-Streams. Der Speicherort der Streams, die ich herunterladen möchte, ist in diesem Format.RTMP: Gibt es so ein Linux-Kommandozeilen-Tool?

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

Wer weiß von solch einem Befehlszeilenwerkzeug? Oder überhaupt etwas, wonach ich gefragt habe?

Ich möchte keine vollständigen Software-Anwendungen und es wäre toll, wenn es unter Linux über Shell oder so etwas funktioniert.

Dank all

Antwort

23

Einer tun sollte folgendes, wenn Sie mplayer oder vlc kompiliert mit RTMP Zugriff haben.

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

Dies wird eine ./stream.dump erzeugen.

 
vlc -I dummy rtmp://live.site.com/loc/45/std_fc74a6b7f79c70a5f60.mp3 \ 
    --sout file/ts:output.mpg vlc://quit 

Dies wird eine ./output.mpg erzeugen. Sie müssen es demuxen, um nur den Audio-Stream zu extrahieren.

+0

Großartig, danke! Ich habe mplayer installiert, aber ich bin nicht sicher, wie man rtmp Unterstützung hinzufügt oder einschließt. Gibt es einen Befehl, den ich verwenden kann, um es zu installieren? Ich benutze Fedora 10, yum als Installer. – Abs

+0

Hmm, eigentlich scheint es, als hätte mplayer mplayer keine RTMP-Unterstützung. Sofern Sie nicht selbst versuchen möchten, mplayer selbst zu patchen und zu kompilieren, schlage ich vor, stattdessen VLC zu verwenden. – ephemient

11

Ich denke, die Landschaft hat sich seit der Zeit einiger der vorherigen Antworten etwas verändert. Zumindest nach der rtmp wikipedia page. Es scheint, dass die rtmp Protokollspezifikation für die öffentliche Nutzung geöffnet ist. Zu diesem Zweck können Sie zwei Werkzeuge verwenden, um zu erreichen, was das ursprüngliche Plakat fragte, rtmpdump und ffmpeg. Hier ist, was ich getan habe, um einen rtmp-Stream herunterzuladen, der einen Audio-Podcast gesendet hat.

Schritt # 1 - Download der Strom

benutzte ich das Werkzeug rtmpdump dies zu erreichen. Wie so:

% 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 

Schritt # 2 - wandelt die FLV-Datei zu mp3

OK, so jetzt haben Sie eine lokale Kopie des Streams bekommen, file.flv. Sie können ffmpeg verwenden, um die Datei weiter abzufragen und auch nur den Audioteil zu extrahieren.

% 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 

Aus der obigen Ausgabe können wir sehen, dass die file.flv einen einzelnen Stream enthält, nur Audio, und es ist im mp3-Format, und es ist ein einziger Kanal. Um es zu einer richtigen MP3-Datei zu extrahieren können Sie ffmpeg wieder verwenden:

% 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% 

Der obige Befehl wird kopieren der Audio-Stream in eine Datei, file.mp3. Sie könnten auch zu einer WAV-Datei haben wie so extrahiert:

ffmpeg -i file.flv -vn -acodec pcm_s16le -ar 44100 -ac 2 file.wav 

Diese page nützlich war in der Bestimmung, wie die FLV-Datei in andere Formate zu konvertieren.

10

Diese Frage ist alt, aber dies kann anderen Benutzern mit diesem Zweifel helfen.
Um direkt, ohne Konvertierung herunterladen, gibt es zwei Möglichkeiten (der Autor der beiden Programme ist das gleiche und das Verhalten ist das gleiche):

  • RTMPDump. Beispiel: rtmpdump -r "rtmp://host.com/dir/file.flv" -o filename.flv
  • flvstreamer. Beispiel: flvstreamer -r "rtmp://od.flash.plus.es/ondemand/14314/plus/plustv/PO770632.flv" -o salida.flv

Und wenn Sie herunterladen und das Video zur gleichen Zeit konvertieren, ist der beste Weg, die Verwendung ffmpeg:

ffmpeg -i rtmp://server/live/streamName -acodec copy -vcodec copy dump.mp4 
+0

Danke, viel besser als die obigen Lösungen. – idmean