Задание: записать трансляцию конференции, которая идёт через интернет.
На сайте встроен флеш-объект, который, собственно, эту трансляцию и крутит. Методом просмотра исходного текста странички было обнаружено, что флешка берёт видеопоток с сервера по протоколу RTMP. Так как грабить видео очень не хотелось (геморрой, потеря качества, да и вообще отстойное решение), стал разбираться что это за протокол и как сливать такой поток непосредственно с сервера.
Протокол RTMP
RTMP (англ. Real Time Messaging Protocol) проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.
В 2009 году Adobe выпустила документ, названный спецификацией RTMP, однако это умышленно неполный документ, направленный на сдерживание развития альтернативных серверов. Для прочтения этого документа необходимо согласиться с лицензионным соглашением, которое требует создания RTMP сервера только по спецификации от Adobe без каких-либо отступлений. В этой спецификации указаны намеренно неверные данные, так, например, для включения на Flash Player декодера H.264 требуется криптографически подписать хендшейк, а в спецификации написано, что обязательно надо заполнять произвольными данными. Таким образом, приняв условия лицензии на спецификацию, разработчик лишается возможности реализовать полноценный RTMP сервер.
http://ru.wikipedia.org/wiki/RTMP
Протокол прекрасен. Реализация восхитительна. Но задачу решать надо.
Сохранение потока с сервера RTMP
Обычно трансляции идут через веб и посмотреть их вроде бы можно только с веб-странички (во флеш-плеере), без возможности перемотки или сохранения видео на локальный компьютер.
Однако, методом поиска были найдены программы RTMPDump и её форк flvstreamer, которые способны работать с сервером RTMP напрямую, минуя флеш. flvstreamer, кстати, доступен из репозиториев Ubuntu. С ним и будем работать.
Исходный код веб-странички, а точнее та часть, которая отвечает за встраивание плеера, может дать нам следующую информацию:
1. Адрес трансляции (rtmp://домен/путь)
2. Файл описания потоковой сессии по адресу из п.1 (файл.sdp)
Именно так: эта информация содержится не в одном длинном урле, а в двух разных параметрах встроенного объекта. По крайней мере — в моём случае.
Командуем в консоли:
flvstreamer -r rtmp://домен/путь/файл.sdp -o локальный_файл.flv
И в локальный_файл.flv начинает литься чистый, не пережатый, исходного качества поток.
Параметры и ключи программы flvstreamer
flvstreamer --help
Перевод мой, глубоко не вникал, замечания и исправления приветствуются.
FLVStreamer v1.9
(c) 2009 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Программа сохраняет потоковое видео и аудио с сервера rtmp.
--help|-h | Печатает файл справки программы flvstreamer. |
---|---|
--rtmp|-r url | Адрес (URL) трансляции (то есть, rtmp://сервер[:порт]/путь) |
--host|-n hostname | Переопределяет сервер из rtmp url |
--port|-c port | Переопределяет порт из rtmp url |
--socks|-S host:port | Использовать определённый прокси SOCKS |
--protocol|-l | Переопределяет протокол из rtmp url (0 - RTMP, 3 - RTMPE) |
--playpath|-y | Переопределяет путь к трансляции, взятый из rtmp url |
--swfUrl|-s url | URL проигрывателя swf-файлов |
--tcUrl|-t url | URL проигрываемого потока (по умолчанию: "rtmp://сервер[:порт]/проигрыватель") |
--pageUrl|-p url | Веб-адрес programme (?) |
--app|-a app | Имя используемого проигрывателя |
--auth|-u string | Строка аутентификации, которая будет добавлена в конец строки для соединения |
--flashVer|-f string | Версия Flash (по умолчанию: "LNX 10,0,22,87") |
--live|-v | Сохранить прямой эфир , без возможности прокрутки (--resume) по доступным потокам |
--subscribe|-d string | Имя потока, на который хотим подписаться (или, если задан ключ --live, - сделать его умолчательным) |
--flv|-o string | Файл FLV для записи, если имя файла «-» - отправить поток на стандартный вывод |
--resume|-e | Докачать частично загруженный поток RTMP |
--timeout|-m num | Время ожидания соединения, в секундах (по умолчанию: 120) |
--start|-A num | Начать на num секунде потока (не работает с --live) |
--stop|-B num | Остановиться на num секунде потока |
--hashes|-# | Отображать процесс, используя хэши вместо байтов как разделитель |
--buffer|-b | Время буферизации в миллисекундах (по умолчанию: 36000000), эта опция имеет смысл только при отправке потока на стандартный вывод (-o -) |
--skip|-k num | Пропустить num ключевых кадров в процессе поиска последнего ключевого кадра, с которого нужно начать докачку. Нужно при сбоях докачки (по умолчанию: 0) |
--quiet|-q | Скрыть любой вывод. |
--verbose|-V | Увеличить подробность вывода. |
--debug|-z | Включить вывод для разработчика. |
Если не ввести параметры swfUrl, pageUrl, app или auth, они не будут включены в пакет инициализации соединения.
Комментарии
Diman779
#cid18314
Ответить
можете мне сказать ???????
вы можете переделать rtmp:// в http://
вот ссылочка на живой поток rtmp://broadcast.quantumart.ru/live/dfm
Diman779
#cid18501
Ответить
ответьте кто нибуть бля !!!!!!!!
#cid18519
Ответить
#cid18501, Diman779
Отвечаю, бля.
RTMP (англ. Real Time Messaging Protocol) проприетарный протокол потоковой передачи данных, в основном используется для передачи потокового видео и аудиопотоков с веб-камер через интернет.
http://ru.wikipedia.org/wiki/RTMP
HTTP (англ. HyperText Transfer Prоtocоl — «протокол передачи гипертекста») — протокол прикладного уровня передачи данных (изначально — в виде гипертекстовых документов).
http://ru.wikipedia.org/wiki/HTTP
Каким образом, бля, ты хочешь "переделать" протокол RTMP в HTTP?
И самое главное — нахуя?
Diman779
#cid18521
Ответить
#cid18519,
чтоб слушать в плеере бля !!!!!!
Владимир
#cid18608
Ответить
#cid18314, Diman779
#cid18521, Diman779
Не очень понятно, что хочешь сделать. Посмотри здесь:
http://www.adobepress.com/articles/article.asp?p=1014968
и уточни, пожалуйста, вопрос.
Diman779
#cid18612
Ответить
#cid18608, Владимир
мне в плеере нужно слушать а не сайте
Diman779
#cid18613
Ответить
ЕСЛИ МОЛЧАЛ ХРЕН КТО И НАПИСАЛ СЮДА
#cid18620
Ответить
#cid18612, Diman779
Твой первый вопрос: как переделать rtmp в http?
Простой ответ: никак.
rtmp — протокол для передачи потокового видео и аудио.
http — протокол для передачи текста.
Тебе нужно сохранить поток на диск. Как это сделать — написано в заметке.
После этого нужно переконвертировать сохранённый поток в формат, который понимает твой плеер.
#cid18613, Diman779
С капслоком так бывает.
Diman779
#cid18693
Ответить
#cid18620,
это ЖИВОЙ ПОТОК !!!!!!!!!!!!! как ты его сохраниш ???бля это ОНЛАЙН РАДИО DFM как ты на диск сохраниш?
Diman779
#cid18694
Ответить
#cid18620,
и http это тоже аудио вещание
вот тебе весь список !!!!!!!!! этого сещания бля
#EXTM3U
#EXTINF:-1,MiX FM Ukraine (48K)
http://mixfm.com.ua:8000/
#EXTINF:-1,MiX FM Ukraine (192K)
Лишняя информация ни к чему, не надо загромождать комментарии.
#cid18695
Ответить
#cid18693, Diman779
Программой flvstreamer.
#cid18694, Diman779
http — это протокол.
Во-первых, это был далеко не весь список.
Во-вторых, принимать поток надо программой, которая понимает протокол вещания сервера. Если сервер отдаёт поток по http — тебе нужен клиент http. Если сервер отдаёт поток по rtmp — тебе нужен клиент rtmp.
Клиентом http получить поток с сервера rtmp нельзя.
Diman779
#cid18701
Ответить
#cid18695,
чё не реал не чё сделать ?? а то говорят прогой rtmpdump.exe переделывают rtmp в http
Diman779
#cid18725
Ответить
эээ придурки тупые вот смотрите я переделал его в http://66.231.176.36:80/live/dfm
Diman779
#cid18726
Ответить
бараны вы все упёртые и тупые!!!!!!!!!!! всё возможно в этой жизни не чего нет не возможного !!!!!!!
#cid18727
Ответить
#cid18726, Diman779
Дурачок, не ходи сюда.
Diman779
#cid18944
Ответить
#cid18727,
ты иди отсуда
dump
#cid24734
Ответить
Скажите, а возможно ли с помощью этих программ докачивать rtmp-видео? Ведь если его возможно перематывать (без загрузки всего ролика), то значит можно и докачивать? И ещё: что вы думаете делать, если сервисы (наподобие rutube)введут защиты на основе не просто rtmp-потока, а с использованием нескольких потоков, так чтобы файл закачивался с разных ip и разныз udp/tcp-соединений?
ILyAS
#cid39922
Ответить
Столкнулся с аналогичной проблемой!
В Openbox S6+ HD есть FreeTV+, так вот промучался несколько дней пока понял, с чем он работает, оказывается со ссылками на поток rtmp. Где то в инете слышал, есть проги типа snuper, которые могут по http:// определить rtmp://
Хотел спросить спецов, без мата - хотя напрашивается, это реально с точки зрения поймать поток в ресивер для просмотра, увы к сожалению там нет кодеков поддерживающих mms и http. Может кто может объяснить по человечески, без наездов.
Спасибо.
Dark Mind
#cid40985
Ответить
http://fortisclub.com/download/file/972-skyway-internet-tv-v14.html
rtmp playlist для твоего реса, последняя версия.
Я оттуда юзаю.
Дмитрий
#cid55586
Ответить
Почитал посмеялся) А можно переделать поток rtmp в mms?
Хаха
#cid55879
Ответить
Ржач, протоколы
кузя
#cid60947
Ответить
Видеолан может записывать любой поток видео по:
http
mms
rtsp
udp
babindevil
#cid61265
Ответить
Сдрасте, такая задача:
есть поток rtmp который работает n-ое раз в год,но адрес постоянный, так вот нужно что бы этот поток сохранялся автоматом на сервере,ну и чтобы на сайте его можно было смотреть онлайн и эти два процесса не мешали друг другу, просмотр можно реализовать с помощью плагина JW Players, а как запись??
Вопросы нахуя?, что бля, где бля, не принимаются. Пожалуйста по факту если не в лом.
Natali
#cid77628
Ответить
#cid18725, Diman779
Здравствуйте! Аналогичная задача. Вопрос - как Вы это сделали? Поделитесь, пожалуйста!
rtmp - поток от радиовещательного оборудования сделать доступным по http для проигрывания в плеерах на сайте.
ваш рррр
#cid80720
Ответить
как можно выдернут rtmp поток с тв онлайн
imen
#cid80814
Ответить
#cid80720, ваш рррр
Кстати да, я конечно особо не упирался, но…
От локальной копии интервью RMS категорически не отказался бы.
Попытка применения наработанных рецептов успеха не дала.
#cid82542
Ответить
#cid80720, ваш рррр
Я хз. Разбирался с rtmp под конкретный случай, что выяснил — написал сюда. Копать глубже нет ни времени, ни желания, если честно. Если столкнусь и разберусь — допишу. Если кто даст полезную информацию в комментариях — перенесу в заметку.
alexxxxxx
#cid89075
Ответить
Привет. Хочу украсть видео поток и поставить на свой сайт.
как это зделат?
вот что достать сумел -
rtmp://5.39.71.63/live/ch01
rtmp://$OPT:rtmp-raw=rtmp://5.39.71.63/live playpath=ch01?token=VsZnC28VZEHD4gfA-ZjIAQ&e=1390803005 swfUrl=http://www.ziuriu.tv/res/js/flow/flowplayer.commercial-3.2.15.swf live=1 pageUrl=http://www.ziuriu.tv/demo
thanks
Андрей
#cid91196
Ответить
Здравствуйте.
Интересует скачка видео с архивов популярных тв каналов - домашний, рентв, пятница, нтв, перец и т.д. И для начала хотелось бы выяснить по каким схемам там происходит проигрывание видео? С помощью каких программ или расширений возможно скачивание видео именно с вышеуказанных ресурсов.
например -
http://www.domashniy.ru/video/dekorativnye-strasti/
http://www.ntv.ru/peredacha/Akzenty/last24168733/
http://ren.tv/video/epizod/6655
http://revizorro.friday.ru/videos/vipuski/novosibirsk-4-fv
http://chetv.ru/show/utilizator/1_sezon/4_vyipusk/
Юзер
#cid91329
Ответить
В исходном коде веб странички не смог отыскать rtmp ссылку , поймал ее правда с помощью wiresharka и им же отыскал Playpath. Пробовал качать и с помощью RTMPDump и FLVstreamer - качает , но в каком то ужатом виде до не могу. Найти нормальную ссылку так и не смог((
Гость
#cid91777
Ответить
А не подскажет ли многоуважаемый алл, как записать фрагмент онлайн-трансляции с помощью RTMPDump или FLVstreamer (клоны - обе совершенно одинаковы)
Пишут канал с вебкамеры на комп, но ониж суки обе - пишут пока не надавиш Контрол-Брейк
Как этим двом сукам сказать, чтобы они писали 10 минут (например) и валили нахер (ну типа будет в цикле кучка из 10-ти минутных нарезок)
Это возможно ?
#cid91781
Ответить
#cid91777, Гость
Например скриптом, который через 10 минут пошлёт программе сигнал выхода.
imen
#cid91782
Ответить
#cid91781,
С последующим перезапуском в новый файл дампа?
По мне правильнее зайти в трекер апстрима и запросить опций, аналогичных реализованным в dvgrab.