Oct
23
|
Как скачать видео с RuTube
|
Если посмотреть в интернетах, то рунет полон от криков по типу «как скачать с RuTube», не качается и т.д.
С задачей не справляются большинство известных сервисов для скачивания видео, таких как videosaver, savefrom.net и т.д.
Проблема в том, что команда RuTube решила, что они очень умные (хаха) и не разрешают пользователям запретила скачивать контент с их видеохостинга.
Это разрешают все видеохостинги известные (YouTube, Vimeo, Metacafe), а вот RuTube особенный, он решил со скачиванием бороться альтернативно-одаренным способом — переведя проигрывание видео на сайте на rtmp.
Но настоящих джедаев это конечно не остановит.
Сегодня я расскажу как легко и удобно можно скачать видео с RuTube (делал для своего видеохостинга и с вами поделюсь – с работающим примером на борту).
Update. Рабочий пример
Поехали.
RTMPdump
Нам понадобится эта программа для скачивания наших видео. Скачать можно тут вот (винда) и тут (сорцы).
Также можно в Linux собрать из дерева пакетов (apt, yum etc), в Debian’e точно есть (apt-get install rtmpdump).
Данная программа является консольной, поэтому у некоторых виндопользователей может возникнуть батхерт по поводу ниженаписанного, но если уж очень захочется скачать — думаю разберутся.
Как запустить программу из Linux думаю никому не нужно рассказывать, поэтому проведем ликбез для пользователей Windows.
Программа запускается через консоль (нажимаем win+r одновременно и в появившемся окне пишем «cmd» — без кавычек). Откроется системная консоль, где нужно будет перейти в директорию, где находится наша программа.
Программа не требует установки, достаточно распаковать в директорию удобную для навигации (например E:\tmp). Таким образом когда откроется консоль — делаем переход в данную директорию (в которую распаковали) через «cd E:\tmp» (опять же без кавычек). Теперь можно запускать программу.
Для начала стоит прочитать документацию к возможным ключам:
rtmpdump -h
Выведется листинг доступных ключей. Из них нас будут интересовать следующие:
–rtmp|-r url URL (e.g. rtmp://host[:port]/path)
–flv|-o string FLV output file name, if the file name is — print stream to stdout
–app|-a app Name of target app on server
–swfVfy|-W url URL to player swf file, compute hash/size automatically
Остальные можно найти в листинге (в нашем случае они не нужны).
Ключи RTMPdump
-r — задается адрес rtmp потока (путь к файлу), позже вернемся к этому.
-o — адрес и название файла, куда будет сохранен скачанный файл
-W — тут нужно указать адрес плеера RuTube для того, чтобы можно было идентифицировать себя, как обычный плеер (RuTube не разрешает доступ для видео, не проигрываемом в их плеере, поэтому нужен такой финт ушами). В нашем случае это http://rutube.ru/player.swf
-a — адрес приложения, которое занимается стриммингом на стороне сервера (станет понятнее на примере)
В целом все понятно, только читатель спросит меня — откуда же взять этот самый адрес для ключа -r ? Логично, его нужно получить сначала.
Рассмотрим как это сделать на примере.
Адрес RTMP потока
Возьмем видео с RuTube, например это:
Адрес: http://rutube.ru/tracks/3698782.html?v=c858060713937cf911caaa8cb0737598
Из данного урла нас будет интересовать часть, которая стоит после ?v=, тоесть c858060713937cf911caaa8cb0737598 — это и есть идентификатор видео в системе.
Дальше нам нужно зайти по адресу http://bl.rutube.ru/c858060713937cf911caaa8cb0737598.xml и увидеть собственно адрес rtmp потока.
Для нашего примера содержание файла:
<?xml version="1.0"?> <response status="302"> <finalAddress><![CDATA[rtmp://video-3-13.rutube.ru:1935/rutube_vod_2/_definst_/mp4:vol21/movies/c8/58/c858060713937cf911caaa8cb0737598.mp4?e=1287779944&s=20b75eb1541beb9cad2c69c463593e79]]> </finalAddress> </response>
Таким образом адрес rtmp потока следующий -
rtmp://video-3-13.rutube.ru:1935/rutube_vod_2/_definst_/mp4:vol21/movies/c8/58/c858060713937cf911caaa8cb0737598.mp4?e=1287779944&s=20b75eb1541beb9cad2c69c463593e79
Скачиваем видео
Т.к. у нас теперь адрес потока — мы готовы к скачиванию видео.
Конечная команда для нашего видео из примера будет следующей:
rtmpdump -r "rtmp://video-3–13.rutube.ru:1935/rutube_vod_2/_definst_/mp4:vol21/movies/c8/58/c858060713937cf911caaa8cb0737598.mp4?e=1287777283&s=b38e8476aea1d5c074c53ac4433ddca8" -a "rutube_vod_2/_definst_/mp4:vol21/movies/c8/58/c858060713937cf911caaa8cb0737598.mp4?e=1287777283&s=b38e8476aea1d5c074c53ac4433ddca8" -o my.mp4 -W "http://rutube.ru/player.swf"
Если все выполнили правильно, результат будет приблизительно следующий:
RTMPDump v2.3 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL Connecting ... INFO: Connected... Starting download at: 0.000 kB INFO: Metadata: INFO: duration 36.80 INFO: moovPosition 28.00 INFO: width 480.00 INFO: height 272.00 INFO: videocodecid avc1 INFO: audiocodecid mp4a INFO: avcprofile 66.00 INFO: avclevel 21.00 INFO: aacaot 2.00 INFO: videoframerate 24.72 INFO: audiosamplerate 44100.00 INFO: audiochannels 2.00 INFO: trackinfo: INFO: length 802.00 INFO: timescale 25.00 INFO: language und INFO: sampledescription: INFO: sampletype avc1 INFO: length 1623040.00 INFO: timescale 44100.00 INFO: language und INFO: sampledescription: INFO: sampletype mp4a 2859.766 kB / 36.78 sec (99.9%) Download complete
Собственно на этом все.
Постскриптум
Данный случай с рутьюбом еще раз показал, что защитить контент в интернете – невозможно, даже самые изощренные методы защиты всеравно имеют способы обхода (и пусть в нашем случае это не изощренный, но попытка скрыть контент) для конечного пользователя.
Однако возможно это помогло RuTube разгрузить свои сервера. Или перейти с псевдостримминга на стримминг по RTMP. Однако я в это не слишком верю.
Для демонстрации работы подобной вещи я сделал вот такой вот пример на скору руку:
http://freeprogs.kiev.ua/rutube.php
Пробуйте в работе – пишите отзывы
P.S. Данная заметка никоим образом не хочет оскорбить или задеть чувства разработчиков RuTube. Данный пример – всего-лишь демонстрация возможностей работы rtmpdump на примере RuTube.
23.10.2010 в 09:13
ставишь в ФФ плагин Fast Video Download и не морочишь голову.
23.10.2010 в 12:31
degtyarchuk:
Насколько я помню – этот плагин не умеет с rtmp качать, только обычные потоки по http.
Вы сами проверяли-хоть? Я взял плагин отсюда – https://addons.mozilla.org/ru/firefox/addon/3590/ и попробовал посмотреть, что выдает он для этого видео – http://rutube.ru/tracks/3698782.html?v=c858060713937cf911caaa8cb0737598 . А выдает он только, как я и говорил – ссылки на файлы preroll и postroll, которые с http раздаются.
Так что не все так просто. Точнее просто – на словах Или я что-то не так понял?
23.10.2010 в 17:16
Во первых, Win+R, а не Ctrl+R
Во вторых, защитить контент от скачивания в инете еще как возможно, ключевые слова – DRM. Так работают онлайн-видеотеки. Правда, клиент для проигрывания гораздо толще, и не всегда кроссбраузерный, и еще реже кроссплатформенный.
23.10.2010 в 20:16
Ghost From The Past:
Действительно, спасибо за исправление. Поправил, не знаю даже почему меня дернуло про ctrl написать
Это все костыли, причину вы сами же описали. Если нет кроссплатформенности и кроссбраузерности – это уже не решение.
24.10.2010 в 13:49
А rtmp, допустим этот rtmp://video-1-4.rutube.ru:1935/rutube_vod_1/_definst_/mp4:vol21/movies/14/25/1425ecefc6af72e4f33c7a1ed5434f0c.mp4?e=1287920871&s=fcdcf5d74563653b9c794f9137df81d0 с Рутуба может проиграть какой-нибудь онлайн плеер?
24.10.2010 в 15:46
Greg:
Теоретически – может, если пройдет swf-верификацию RuTube (мы это делаем через -W параметр при подключении к потоку).
26.10.2010 в 18:33
За 3 дня скачали уже 80 видео. Капля в море, но видно, что востребовано людьми