Загружать потоковое видео по протоколу 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: А вот ещё вариант.
вытащить урлы получилось, а с rtmp dump проблема: rtmp server sent error
ОтветитьУдалитьrtmp server requested close
cистеме не удается найти указанный путь
видео вот
Property 'swfUrl' String 'http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.9 '
Property 'tcUrl' String 'rtmp://cdn0.onlinetv.ru:1935/onlinetvload/'
881 68.803187000 192.168.0.126 88.212.207.11 RTMP 128 play('mp4:onlinetv/19/794/pushnoy.mp4') | Set Buffer Length 1,5000ms
и составленный путь: C:\FFmpeg\ffmpeg-20130418-git-ee94362-win32-static\bin\ffmpeg -i "rtmp://88.212.207.11:128/onlinetv/mp4: onlinetv/19/794/pushnoy.mp4 \
:\FFmpeg\ffmpeg-20130418-git-ee94362-win32-static\bin\ffmpeg playpath=mp4: onlinetv/19/794/pushnoy.mp4 \
:\FFmpeg\ffmpeg-20130418-git-ee94362-win32-static\bin\ffmpeg swfUrl='http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.9" \
:\FFmpeg\ffmpeg-20130418-git-ee94362-win32-static\bin\ffmpeg -c copy pushnoy.mp4
rtmpdump\rtmpdump-2.1-windows\rtmpdump\rtmpdump.exe --rtmp "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/19/794/pushnoy.mp4" \
--playpath "mp4:onlinetv/19/794/pushnoy.mp4" \
почему-то в команде ffmpeg номер порта 128, а должен быть 1935, вот так нормально качает:
Удалитьffmpeg -i "rtmp://88.212.207.11:1935/onlinetv/mp4:onlinetv/19/794/pushnoy.mp4 playpath=mp4:onlinetv/19/794/pushnoy.mp4 swfUrl=http://www.onlinetv.ru/static/flash/player.swf?v=1.0.5.5" -c copy pushnoy.mp4