Тема: Поиск и получение ссылок на rtmp поток
Тема создана для вопросов по rtmp потокам.
Вы тут как гость.
Неофициальный форум DLNA Home Media Server → Coding → Поиск и получение ссылок на rtmp поток
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Тема создана для вопросов по rtmp потокам.
Уважаемый WendyH помоги узнать ссылку на поток с канала которую можно вставить в VLC или НМС с сайта:
http://webtv.md/view_channel.jsp?id=185
За ранее спасибо.
HMS, в принципе, умеет работать с rtmp потоками через транскодер rtmpdump.
И даже в скрипте получения ссылки в переменную достаточно занести параметры для работы этого протокола, чтобы он сам понял, что нужно работать именно через данный транскодер.
Но самое тут сложное - это получить или найти эти параметры.
Для этого есть инструментарий. Понадобиться:
1) Сам RTMPDump (файлы rtmpdump.exe, rtmpsrv.exe, rtmpsuck.exe - архив)
2) Какой-нибудь rtmphelper. Например, вот этот вот.
Распаковываем в какой-нибудь каталог все файлы.
И наши действия:
1) Запускаем RTMPDumpHelper.exe. Появляется два окна: одно - сам RTMPDumpHelper, второе - rtmpsuck.exe, которое слушает и выступает в качестве rtmp сервера или, точнее, прокси.
2) Запускаем InternetExplorer, вводим адрес страницы, где идёт вещание rtmp потока (у нас это http://webtv.md/view_channel.jsp?id=185)
3) Отодвигаем черное окно rtmpsuck.exe в сторонку и наблюдаем за ним. Если он автоматом не подхватил rtmp поток и там полное молчание, то выполняем следующий пункт. Если там появилась информация, следующий пункт пропускаем.
4) В окне RTMPDumpHelper идём в меню "Options" -> "Add Support For Web Browsers" (или нажимаем F8). Открывается окно, где нужно среди списка процессов найти наш запущенный InternetExplorer c нашей открытой страничкой. Он должен добавить строчку с нашим процессом в главное окно. После чего в InternetExplorer-е нажимаем F5, т.е. обновляем страничку с потоком.
5) По-идее, у нас в черном окне rtmpsuck.exe должна появиться информация. Что-то типа такой:
В обведённой области нас как раз и интересуют все эти параметры.
Закрываем все окна. Тут же не отходя от кассы проверяем, создав батник со следующим содержимым:
rtmpdump.exe -r "rtmp://83.218.202.202/live" --app "live" --flashVer "WIN 18,0,0,232" -W "http://webtv.md/swf/WebTV.swf" --pageUrl "http://webtv.md/view_channel.jsp?id=185" --playpath "wt_detskii.stream" -o webtv.flv
Запускаем и смотрим, всё ли мы правильно указали и работают ли такие параметры.
Должно начаться получение потока и сохранение его в webtv.flv.
Если всё идёт. Значит мы всё нашли и указали правильно.
А в самом HMS ссылка должна выглядеть точно также, только без "rtmpdump.exe" в начале. Т.е. начинаться на "-r ...".
Какие параметры принимает rtmpdump, запускаем:
rtmpdump.exe -h
В данном случае всё прошло гладко. Но зависит от сайта и серверов rtmp. Иногда необходимо указывать дополнительные параметры и ковыряться в коде html страницы или флеш плеера.
P.S.: Чтобы скопировать информацию из консольного окна rtmpsuck.exe, можно нажать на иконку в верхнем левом углу, в появившемся меню выбрать "Изменить" и там "Пометить". Помечаем мышкой нужную прямоугольную область и нажимаем Enter. Это скопирует в буфер обмена выделенный текст, который потом вставляем в любой текстовый файл для сохранения и удобства...
Большое спасибо. Поскольку я долек от серьезного программирования. WendyH, напиши в паскале скрипт запуска потока в НМС для рассматриваемой ссылки.
Через Charles увидел, что он обращается по ссылке
http://webtv.md/service/streams/185
В ответе там мы видим, что есть значение Playpath и rtmp адрес.
Из моего предыдущего поста ясно, какие теперь параметры нужно подставлять.
Var
gsUrlBase: String = "http://webtv.md";
// --- Формирование ссылки канала с сайта webtv.md ----------------------------
Procedure GetLink_WebTv();
Var
sLink, sID, sXml, sServ, sApp, sFlashVer, sFlashUrl, sPlaypath: String;
Begin
HmsRegExMatch('id=(\d+)', mpFilePath, sID);
sXml := HmsDownloadURL(gsUrlBase+'/service/streams/'+sID, 'Referer: '+mpFilePath, True);
HmsRegExMatch('<name>(.*?)</name>' , sXml, sPlaypath);
HmsRegExMatch('<rtmp_server>(.*?)</rtmp_server>', sXml, sServ );
sApp := 'live';
sFlashVer := 'WIN 18,0,0,232';
sFlashUrl := 'http://webtv.md/swf/WebTV.swf';
sLink := Format('-r "%s" --app "%s" --flashVer "%s" -W "%s" --pageUrl "%s" --playpath "%s"',
[sServ, sApp, sFlashVer, sFlashUrl, mpFilePath, sPlaypath]);
MediaResourceLink := sLink;
End;
///////////////////////////////////////////////////////////////////////////////
// Г Л А В Н А Я П Р О Ц Е Д У Р А //
Begin
GetLink_WebTv();
End.
Уважаемый WendyH большое спасибо за внимание. Остался одна проблема не работает на ТВ если установить службу "Домашний медиа-сервер..."
Уважаемый WendyH большое спасибо за внимание. Остался одна проблема не работает на ТВ если установить службу "Домашний медиа-сервер..."
А вот тут даже не знаю почему. Попробуйте профиль на подкасте конкретный указать. Хотя.. странно.
Помню тоже было уже такое, что в режиме службы не шло. Но так и не разобрались. Не помню даже, что именно было.
У меня телека под рукой нет проверять.
Не помогает менять профиль. Такое у меня было с Torrentami под Windows 8. пока не прописывали в регистрах. А тут win xp ...
Только вот зачем использовать отдельный rtmpdump, если он уже и так встроен в ffmpeg ?
Только вот зачем использовать отдельный rtmpdump, если он уже и так встроен в ffmpeg ?
Эм... спасибо. Не знал.
Правда так и не смог проверить и запустить получение rtmp потока с ходу с помощью ffmpeg.
Например, есть такая строка, и она работает:
rtmpdump -r "rtmp://88.150.190.170/vod/" -a "vod/" -f "WIN 15,0,0,152" -W "http://AmericanDad.fox-fan.ru/player/uppod.swf" -p "http://AmericanDad.fox-fan.ru/series.php?id=104" -y "mp4:3/GaGen/americandad/1/kuraj-bambey/104.mp4" -o 1.flv
А вот тоже самое, только с ffmpeg:
ffmpeg -i "rtmp://88.150.190.170/vod/" -rtmp_flashver "WIN 15,0,0,152" -rtmp_swfurl "http://AmericanDad.fox-fan.ru/player/uppod.swf" -rtmp_pageurl "http://AmericanDad.fox-fan.ru/series.php?id=104" -rtmp_playpath "mp4:3/GaGen/americandad/1/kuraj-bambey/104.mp4" 11.mp4
Выдаёт:
Closing connection: NetStream.Play.Failed
rtmp://88.150.190.170/vod/: Unknown error occurred
Что-то не могу углядеть, что и где я пропускаю.
P.S.:
Тоже самое для примера из поста выше:
ffmpeg -i "rtmp://83.218.202.202/live" -rtmp_app "live" -rtmp_flashver "WIN 18,0,0,232" -rtmp_swfurl "http://webtv.md/swf/WebTV.swf" -rtmp_pageurl "http://webtv.md/view_channel.jsp?id=185" -rtmp_playpath "wt_detskii.stream" webtv.flv
не работает.
Хотя
rtmpdump.exe -r "rtmp://83.218.202.202/live" --app "live" --flashVer "WIN 18,0,0,232" -W "http://webtv.md/swf/WebTV.swf" --pageUrl "http://webtv.md/view_channel.jsp?id=185" --playpath "wt_detskii.stream" -o webtv.flv
работает.
Нужно, чтобы кто-то показал конкретно.
Если нужно, то такой вариант через ffmpeg у меня работает
ffmpeg -i "rtmp://88.150.190.170/vod/ app=vod/ playpath=mp4:3/GaGen/americandad/1/kuraj-bambey/104.mp4 swfUrl=http://AmericanDad.fox-fan.ru/player/uppod.swf pageUrl=http://AmericanDad.fox-fan.ru/series.php?id=104" -acodec copy -vcodec copy -f flv pipe: | "C:\Progra~2\VideoLAN\VLC\vlc" --file-caching=3000 -
aleks123, спасибо. Вон оно как даже по параметрам.
Как раз нужен был рабочий пример.
Уважаемый WendyH можно рабочии пример с ffmpeg, может http://webtv.md на НМС и как сервер показывать будет.
Уважаемый WendyH можно рабочии пример с ffmpeg, может http://webtv.md на НМС и как сервер показывать будет.
Не совсем понял, а что, пример вот этот как скрипт получения ссылки не работает для webtv.md?
или вам нужен конкретный пример командной строки с ffmpeg?
Лично у меня срабатывает этот вариант:
ffmpeg -i "rtmp://83.218.202.202/live app=live/ playpath=wt_detskii.stream swfUrl=http://webtv.md/swf/WebTV.swf pageUrl=http://webtv.md/view_channel.jsp?id=185" -acodec copy -vcodec copy -f flv pipe: | "C:\Progra~1\VideoLAN\VLC\vlc" --file-caching=3000 -
Если вам нужен подкаст HMS для webtv.md и с этим есть какие-то трудности, могу помочь.
Для начала, нужно создать подкаст и сделать скрипт получения списка каналов, где ссылки должны быть примерно такого вида:
http://webtv.md/view_channel.jsp?id=183
И создать скрипт получения ссылки на поток как в примере выше.
А как узнать для конкретного ресурса данные по rtmp потоку (не зависимо, что мы будем использовать для транскодирования в HMS) показаны в примерах выше. Просто потом строится на этих данных скрипт, который для каждого канала подставляет свои данные - это будет разный playpath и pageUrl.
В общем, уточните вопрос, ибо я сейчас не очень трезв.
Вот пример на rtmpdump:
хотелось на ffmpeg.
Вот пример на rtmpdump:
хотелось на ffmpeg.
Наконец-то добрался до компа.
Надо в скрипте заменить:
sLink := Format('-r "%s" --app "%s" --flashVer "%s" -W "%s" --pageUrl "%s" --playpath "%s"',
[sServ, sApp, sFlashVer, sFlashUrl, mpFilePath, sPlaypath]);
на:
sLink := Format('-i "%s app=%s playpath=%s swfUrl=%s pageUrl=%s"',
[sServ, sApp, sPlaypath, sFlashUrl, mpFilePath]);
Но проверил, почему-то hmsmpeg (котоорый использует ffmpeg-1.dll) не хочет играть rtmp ссылки такие.
А вот если у подкаста выставить профиль "Фильмы (основной) - FFMPEG", который использует ffmpeg.exe вместо hmsmpeg.exe (соответственно файл ffmpeg.exe должен быть отдельно скачан и находится в папке "Transcoders" для использования этого профиля), то такой скрипт начинает работать.
Вот подкаст, у которого такой профиль уже выставлен.
Проверил, некоторые каналы не идут. Но они и на сайте, вроде бы, не идут. В общем, вот вам информация для размышления. Сам ничего толком кроме работоспособности пары каналов не проверял.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Неофициальный форум DLNA Home Media Server → Coding → Поиск и получение ссылок на rtmp поток