RTMP: есть ли такой инструмент командной строки для Linux?

Я везде искал утилиту для Linux, которая позволит мне загружать потоки rtmp. Не FLV-видео, а MP3-потоки. Расположение потоков, которые я хочу загрузить, находится в этом формате.

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

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

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

Спасибо всем


person Abs    schedule 21.06.2009    source источник


Ответы (3)


Если у вас есть 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. Вам придется демультиплексировать его, чтобы извлечь только аудиопоток.

person ephemient    schedule 21.06.2009
comment
Большое спасибо! Я установил mplayer, но не знаю, как добавить или включить поддержку rtmp. Есть ли команда, которую я могу использовать для его установки. Я использую Fedora 10, yum в качестве установщика. - person Abs; 23.06.2009
comment
Хм, на самом деле кажется, что mainline mplayer не поддерживает RTMP. Если вы не хотите попробовать исправить и скомпилировать mplayer самостоятельно, я предлагаю вместо этого использовать VLC. - person ephemient; 23.06.2009

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

  • 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
person Juan Simón    schedule 06.05.2012
comment
Спасибо, намного лучше, чем приведенные выше решения. - person idmean; 26.03.2014

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

person slm    schedule 14.03.2012