Скачивание потокового видео RTMP

Сейчас многие сайты, специализирующиеся на видеохостинге и видеотрансляции переходят на протокол RTMP (далеко ходить не надо, тот-же rutube.ru шлет свои видео по этому протоколу). Так что же делать, если вам необходимо скачать потоковое видео (видеотрансляцию) которое идет через интернет по этому протоколу?

Трансляции эти, как правило просматриваются через флеш-плеер на сайте (так-же как и обычные flv ролики) и представляют из себя ссылку вида rtmp://имя сервера/путь/имя трансляции (как сделать на своем сайте такую трансляцию я рассказывал в статье Организация онлайн трансляции на сайте) и просто скопировав этот адрес в адресную строку браузера, скачать у вас ничего не получится. Для скачивания такого потокового видео, отлично подойдет утилита RTMPDump, предназначенная для скачивания RTMP-потока. Скачать эту утилиту можно как для Windows и Linux, так и для Android.

Скачиваем программу, распаковываем ее в необходимую директорию и запускаем скачивание командой:

rtmpdump -r rtmp://путь/к/трансляции -o output.flv

, где output.flv — имя сохраняемого файла.

У самой утилиты rtmpdump есть еще достаточно много  дополнительных ключей для запуска, узнать о них можно командой:

rtmpdump -h

Приведу свой вольный перевод этих ключей.

Ключ
полное имя|сокращенное
Значение
—help|-h Вывести на экран эту подсказку.
—rtmp|-r ссылка Адрес (URL)трансляции (т.е. rtmp://сервер[:порт]/путь)
—host|-n хост Переопределяет имя сервера
—port|-c порт Переопределяет порт
—socks|-S хост:порт Использовать указанный SOCKS прокси
—protocol|-l номер Переопределяет протокол (0 — RTMP, 2 — RTMPE)
—playpath|-y путь Переопределяет путь к трансляции
—playlist|-Y Установить плейлист перед воспроизведением
—swfUrl|-s ссылка Ссылка на swf-плеер
—tcUrl|-t ссылка Ссылка на проигрываемый поток (по умолчанию: «rtmp://сервер[:порт]/приложение»)
—pageUrl|-p ссылка Ссылка на программу
—app|-a app Имя программы на сервере
—swfhash|-w hexstring SHA256 хеш для распаковки SWF файла (32 байта)
—swfsize|-x значение Размер распакованного SWF файла, необходимого для SWFVerification
—swfVfy|-W ссылка Ссылка на swf файл для автоматического вычисления размера/хеша
—swfAge|-X кол-во дней Количество дней для использования кешированного SWF хеша перед обновлением
—auth|-u строка Строка аутентификации добавляемая к строке соединения
—conn|-C тип:данные Произвольные AMF данные, которые должны быть добавлены к строке соединения. Может иметь значения:
B:boolean(0|1), S:string, N:number, O:object-flag(0|1), Z:(null), NB:name:boolean, NS:name:string, NN:name:number
—flashVer|-f значение Версия flash-плеера (по умолчанию: «WIN 10,0,32,18»)
—live|-v Сохранить живой поток, команда —resume невозможна при использовании этой команды
—subscribe|-d значение Имя потока для подписывания (если задан ключ —live, сделает его по умолчанию)
—flv|-o имя Имя сохраняемого flv файла
—resume|-e Докачать частично загруженный RTMP поток
—timeout|-m значение Значение таймаута в секундах (по умолчанию: 30)
—start|-A значение Значение начала потока в секундах (не работает при использовании —live)
—stop|-B значение Значение остановки потока в секундах
—token|-T ключ Ключ для SecureToken ответа
—jtv|-j JSON Аутентификация для Justin.tv устаревших серверов
—hashes|-# Отображать процесс, используя вместо разделителей хеши, а не байты
—buffer|-b Время буферизации в миллисекундах (по умолчанию: 36000000)
—skip|-k значение Количество пропускаемых ключевых кадров, при поиске последнего ключевого файла, с которого нужно начать докачку. Полезно при сбоях докачки (по умолчанию: 0)
—quiet|-q Не отображать ничего на экране
—verbose|-V Более подробный вывод комманд
—debug|-z Включить уровень отладки для разработчика

Если не передавать параметры swfUrl, pageUrl, или auth, то они не будут включены в пакет подключения.

3 комментария

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *