Oct
23
|
Как скачать видео с RuTube
|
Если посмотреть в интернетах, то рунет полон от криков по типу «как скачать с RuTube», не качается и т.д.
С задачей не справляются большинство известных сервисов для скачивания видео, таких как videosaver, savefrom.net и т.д.
Проблема в том, что команда RuTube решила, что они очень умные (хаха) и не разрешают пользователям запретила скачивать контент с их видеохостинга.
Это разрешают все видеохостинги известные (YouTube, Vimeo, Metacafe), а вот RuTube особенный, он решил со скачиванием бороться альтернативно-одаренным способом — переведя проигрывание видео на сайте на rtmp.
Но настоящих джедаев это конечно не остановит.
Сегодня я расскажу как легко и удобно можно скачать видео с RuTube (делал для своего видеохостинга и с вами поделюсь – с работающим примером на борту).
Update. Рабочий пример (пример удален!!!!)
Обновление от 07.05.2011 . Способ работает снова.
Поехали.
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/" -a "rutube_vod_2/_definst_" -y "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 видео. Капля в море, но видно, что востребовано людьми
03.11.2010 в 22:39
Большое спасибо, Станислав! Без Вас было совсем туго “любителям” рутуба
07.11.2010 в 02:43
Игорь:
Не за что
Пример удалил, думаю все успели попробовать в работе. А ресурсы кушает – поэтому спрятал Кто хочет – может поднять у себя аналогичное – как это сделать – я написал.
08.11.2010 в 21:22
Станислав, а можете исходник сбросить на php, я не силен в программировании, а сервис очень бы пригодился. Заранее спасибо.
12.11.2010 в 18:20
Psprt
Прошу прощения – но это уже мой интеллектуальный труд. Как сделать – расписано тут по полочкам почти что. Кроме куска кода на php, который пишется довольно просто.
14.11.2010 в 23:03
Что делать если в командной строке после ввода директории с программой пишет (не является внутренней или внешней командой, исполняемой программой или пакетным файлом.)
14.11.2010 в 23:23
Влад
А что в командной строке вводится при этом?
22.11.2010 в 22:56
[...] Как скачать видео с RuTube. Сказ о том, что контент в интернете защить низзя. Ваще низзя. Никак!. И, собственно, это нормально – по другому никогда и не будет. [...]
15.01.2011 в 14:51
Что-то они поменяли.
Вот ссылка:
http://bl2.rutube.ru/4fad7505d319e45ccc5941e580c2bde5.xml
При обновлении в брайзере содержимое меняется каждый раз (!).
Всё равно забиваю строку для скачивания:
rtmpdump –rtmp “rtmp://video-3-14.rutube.ru/” –app “rutube_vod_1/” –playpath “_definst_/mp4:vol24/movies/4f/ad/4fad7505d319e45ccc5941e580c2bde5.mp4?e=1295092435&s=e0f37289f7d42363a240cb963d3b6f6a&blid=440c8ebaf078a984281546db46df150a” -o my.mp4 –swfUrl “http://rutube.ru/player.swf” –live -V
Выдаёт, что клиентская сигнатура не соответствует.
HandShake: client signature does not match!
15.01.2011 в 15:14
Неправильно просто делаете. Для application путь другой
Вот рабочий пример:
rtmpdump -r 'rtmp://video-3-14.rutube.ru/rutube_vod_1/_definst_/mp4:vol24/movies/4f/ad/4fad7505d319e45ccc5941e580c2bde5.mp4?e=1295097014&s=6ae957f6796b93774f1ba48c5d6350e2&blid=6b761325e081321bb8fcf8a7332061c0' -a 'rutube_vod_1/_definst_/' -y 'mp4:vol24/movies/4f/ad/4fad7505d319e45ccc5941e580c2bde5.mp4?e=1295097014&s=6ae957f6796b93774f1ba48c5d6350e2&blid=6b761325e081321bb8fcf8a7332061c0' -W http://rutube.ru/player.swf -o 1.mp4
Вообще в таких случаях добавляйте –debug и смотрите что пишет. Как правило, если неправильный путь к app – он пишет, что application not found at path бла-бла-бла
Содержимое указанного вами файла и должно меняться каждый раз, т.к. меняются параметры доступа (грубо говоря кука и время ее жизни). В это нет ничего необычного.
15.03.2011 в 17:25
ERROR : RTMP_ReadPacket, failed to read RTMP packet header Хрень
16.03.2011 в 16:26
Толя:
Я в последнем комментарии указал что нужно поправить (в самой теме не исправлял)
22.03.2011 в 12:54
СПАСИБО, выручили!!!
получилось скачать с “rutube” только после того как убрал параметр “-у” (не понял зачем он нужен?)
14.04.2011 в 22:54
все… способ не работает… качает пару метров и rtmp сдыхает
покачать фильмы про зверюшек не успел (((
наверное все же защитить от скачивания разными левыми программами все-таки можно (как это для нас и не печально)
насчет кросплатформенности – ну так кого мнение не виндузятников волновать будет, дополнительная реклама винды еще…
24.04.2011 в 00:03
Помогите скачать клип:
http://rutube.ru/tracks/291277.html?v=450bfd8e391d7bffcd893d951e16e81e
С помощью способа, описанного Станиславом Малкиным при исспользовании rtmpdump, останавливается на 10,1% с надписью:
“ERROR: RTMP_ReadPacket, failed to read RTMP packet header”
Вот мой код:
Пробовал накже скачать с помощью программы StreamTransport: http://www.streamtransport.com/
также останавливается на 17,94%
Это срабатывает защита RuTube?
26.04.2011 в 15:31
да. таки решение сдохло…
DEBUG2: RTMP_ReadPacket: fd=5
DEBUG: RTMPSockBuf_Fill, recv returned -1. GetSockError(): 11 (Resource temporarily unavailable)
ERROR: RTMP_ReadPacket, failed to read RTMP packet header
на оффсайте по поводу этого ничего не пишут. есть патч, который якобы фиксит проблему, но не работает… у кого-нибудь получается скачать сейчас ролики?
26.04.2011 в 16:12
Да, пока не работает. Я не добрался еще до посмотреть что там.
О каком патче речь, можно глянуть?
26.04.2011 в 16:14
http://lists.mplayerhq.hu/pipermail/rtmpdump/2011-April/001356.html
26.04.2011 в 17:07
Надо попробовать будет. Но вроде это немного не о том патч.
07.05.2011 в 18:43
У меня удалось наладить работу скачивалки снова.
Сделал две вещи:
1) http://tradiz.org/files/rtmpdump-2.3-r568-rutube_vod.patch – наложил этот патч
2) поменялись ключи скачивания, обновляю пост
После этого у меня все сразу же заработало снова.
08.05.2011 в 19:40
Станислав, а как этот патч для rtmpdump реализовать в Windows?
08.05.2011 в 20:05
Я не смотрел как оно работает под Windows, если там есть не инталлятор – то можно таким же образом поправить исходники.
11.05.2011 в 18:46
а какие ключики поменялись?) не могу разницы найти
15.05.2011 в 23:45
Не сочтите за рекламу.
Просто Вашу страницу выдал гугл. И опробованный тут способ (на прямую, без патчей) мне не помог. Не у всех есть возможность запускать её на линухе и патчить сырцы.
В инете нашел такую прогу: RuTubeGet
(Она GUI надстройка над тем же rtmpdump)
С её помощью – всё получилось.
Вдруг кому поможет.
18.05.2011 в 02:39
Есть много подобных программ. Лично я рекомендую StreamTransport. Гугл в помощь.
18.05.2011 в 02:40
Разница в ключах -y и -r
20.05.2011 в 14:39
– Пробовал. Останавливалось на 1.6%.
Возможно. Пробовал, как тут написано (и то, что в комментах) – не получалось.
А гугла – да, хороший помощник
17.06.2011 в 20:36
Как мне в убунту 10.04 наложить этот патч не подскажете?
18.06.2011 в 15:41
patch -p1 < file.patch
файл положить в корне сорцов rtmpdump. Выполнять команду оттуда же.