2009-06-21 3 views
18

Я искал всюду, чтобы найти утилиту linux, которая позволит мне загружать потоки rtmp. Не FLV-видео, а MP3-потоки. Местоположение потоков, которые я хочу загрузить, находится в этом формате.RTMP: Есть ли такой инструмент командной строки linux?

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

Кто-нибудь знает такой инструмент командной строки? Или даже что-то близкое к тому, что я прошу?

Мне не нужны полные программные приложения, и было бы здорово, если бы он работал на Linux через Shell или что-то в этом роде.

Спасибо всем

ответ

23

Один из следующих следует делать, если у вас есть mplayer или vlc скомпилирован с доступом RTMP.

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

Это будет генерировать ./stream.dump.

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

Это будет генерировать ./output.mpg. Вам придется демонтировать его, чтобы извлечь только аудиопоток.

+0

Отлично, спасибо! Я установил mplayer, но я не уверен, как добавить или включить поддержку rtmp. Есть ли команда, которую я могу использовать для ее установки. Я использую Fedora 10, yum в качестве установщика. – Abs

+0

Хм, на самом деле кажется, что mainline mplayer не поддерживает RTMP. Если вы не захотите попробовать исправление и компиляцию mplayer самостоятельно, я предлагаю вместо этого использовать VLC. – ephemient

11

Я думаю, что пейзаж немного изменился со времен некоторых предыдущих ответов. По крайней мере, согласно 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 в другие форматы.

10

Этот вопрос старый, но это может помочь другим пользователям с этим сомнением.
Чтобы скачать непосредственно, без какого-либо преобразования, есть два варианта (автор обеих программ является то же самое и поведение такое же,):

  • 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 
+0

Спасибо, намного лучше, чем вышеупомянутые решения. – idmean

Смежные вопросы