Не люблю я смотреть видео на сайтах, а самый любимый жанр, всяческие разговоры, вообще смотреть особого смысла нет, предпочитаю слушать с плейера по пути на работу/ с работы. Поэтому, когда на
OnlineTV.ru появилась
Вся правда о... происхождении человека с доктором биологии Александром Марковым, а кнопки
Скачать не обнаружилось, пришлось немножко поковыряться внутрях OnlineTV.ru и найти способ получить вожделенный mp3, ну и mp4 если надо.
Загружать потоковое видео по протоколу RTMP умеют спец.утилитка
RTMPDump, ну и, сюрприз, сюрприз :)
FFmpeg. Но просто по-тупому взять из исходников страницы
http://www.onlinetv.ru/video/665/ свойства плейера
streamer: "rtmp://cdn0.onlinetv.ru:1935/onlinetvload/", file: "onlinetv/19/665/evolution.mp4,onlinetv/19/665/evolution_hq.mp4" и подсунуть этим утилиткам не получится, во-первых, серверу, кроме адреса файла надо подсовывать еще дополнительные поля, а во-вторых, как оказалось файлы лежат по другому адресу.
Попытка поковырять обмен браузера и сервера при помощи
Microsoft Network Monitor обломалась :( т.к. не смог найти для него парсер RTMP, а без парсера протокола все RTMP пакеты Microsoft Network Monitor показывает как голимый TCP - ничего не поймёшь.
Зато, как оказалось, хорошо показывает RTMP
Wireshark. Запускаем Wireshark, включаем слежение, ставим фильтр
rtmpt, обновляем страницу
http://www.onlinetv.ru/video/665/, запускаем просмотр видео, видим сначала
connect по первоначальному адресу, потом
connect после переадресации и реальный адрес
rtmp://, запомним также свойство
swfUrl, пригодится:
несколькими строками ниже - команда
play с реальным адресом файла:
Из распотрошенных данных можно составить команду на загрузку при помощи
RTMPDump:
rtmpdump.exe --rtmp "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/19/665/evolution.mp4" \
--playpath "mp4:onlinetv/19/665/evolution.mp4" \
--swfUrl "http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.5" \
-o evolution.flv
(если что-то не идет можно добавить ключик --verbose, чтоб получить побольше информации), или при помощи
FFmpeg:
ffmpeg -i "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/19/665/evolution.mp4 \
playpath=mp4:onlinetv/19/665/evolution.mp4 \
swfUrl=http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.5" \
-c copy evolution.mp4
Собственно
FFmpeg'ом можно создавать сразу mp3:
ffmpeg -i "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/19/665/evolution.mp4 \
playpath=mp4:onlinetv/19/665/evolution.mp4 \
swfUrl=http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.5" \
-vn evolution.mp3
Вуаля! Дальше, пока разработчики сайта OnlineTV.ru что-нибудь не поменяют, можно так глубоко не потрошить, а брать из исходников страницы, например
http://www.onlinetv.ru/video/658/, адрес файла
file: "onlinetv/32/658/hakamada.mp4,onlinetv/32/658/hakamada_hq.mp4" и составлять команду для загрузки:
ffmpeg -i "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/32/658/hakamada_hq.mp4 \
playpath=mp4:onlinetv/32/658/hakamada_hq.mp4 \
swfUrl=http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.5" \
-c copy hakamada_hq.mp4
з.ы. обратные слэши - \ - не все командные оболочки адекватно воспринимают как визуальный разрыв длинной строки, так что, на всякий случай - вводите всю команду одной длинной строкой.
UPD:
А вот ещё вариант.