1

Тема: Поиск и получение ссылок на rtmp поток

Тема создана для вопросов по rtmp потокам.

Sony Bravia KDL-32CX523

2

Re: Поиск и получение ссылок на rtmp поток

Уважаемый WendyH помоги узнать ссылку на поток с канала которую можно вставить в VLC или НМС с сайта:
http://webtv.md/view_channel.jsp?id=185

За ранее спасибо.

3

Re: Поиск и получение ссылок на rtmp поток

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 должна появиться информация. Что-то типа такой:
https://hms.lostcut.net/img/help/rtmpdumphelper2.png

В обведённой области нас как раз и интересуют все эти параметры.
Закрываем все окна. Тут же не отходя от кассы проверяем, создав батник со следующим содержимым:

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. Это скопирует в буфер обмена выделенный текст, который потом вставляем в любой текстовый файл для сохранения и удобства...

Sony Bravia KDL-32CX523

4

Re: Поиск и получение ссылок на rtmp поток

Большое спасибо. Поскольку я долек от серьезного программирования. WendyH, напиши в паскале скрипт запуска потока в НМС для рассматриваемой ссылки.

http://webtv.md/view_channel.jsp?id=185

5

Re: Поиск и получение ссылок на rtmp поток

Через 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.
Sony Bravia KDL-32CX523

6

Re: Поиск и получение ссылок на rtmp поток

Уважаемый WendyH большое спасибо за внимание. Остался одна проблема не работает на ТВ если установить службу "Домашний медиа-сервер..."

7

Re: Поиск и получение ссылок на rtmp поток

tarzann5 пишет:

Уважаемый WendyH большое спасибо за внимание. Остался одна проблема не работает на ТВ если установить службу "Домашний медиа-сервер..."

А вот тут даже не знаю почему. Попробуйте профиль на подкасте конкретный указать. Хотя.. странно.
Помню тоже было уже такое, что в режиме службы не шло. Но так и не разобрались. Не помню даже, что именно было.
У меня телека под рукой нет проверять.

Sony Bravia KDL-32CX523

8

Re: Поиск и получение ссылок на rtmp поток

Не помогает менять профиль. Такое у меня было с Torrentami под Windows 8. пока не прописывали в регистрах. А тут win xp ...

9

Re: Поиск и получение ссылок на rtmp поток

Только вот зачем использовать отдельный rtmpdump, если он уже и так встроен в ffmpeg ?

LG 32LA615V

10

Re: Поиск и получение ссылок на rtmp поток

nikolay пишет:

Только вот зачем использовать отдельный 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

работает.

Нужно, чтобы кто-то показал конкретно.

Sony Bravia KDL-32CX523

11 (2016.01.04 17:37:34 отредактировано aleks123)

Re: Поиск и получение ссылок на rtmp поток

Если нужно, то такой вариант через 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 -
Спасибо сказали: WendyH1

12

Re: Поиск и получение ссылок на rtmp поток

aleks123, спасибо. Вон оно как даже по параметрам.
Как раз нужен был рабочий пример.

Sony Bravia KDL-32CX523

13

Re: Поиск и получение ссылок на rtmp поток

Уважаемый WendyH можно рабочии пример с ffmpeg, может  http://webtv.md  на НМС и как сервер показывать будет.

14

Re: Поиск и получение ссылок на rtmp поток

tarzann5 пишет:

Уважаемый 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.

В общем, уточните вопрос, ибо я сейчас не очень трезв.

Sony Bravia KDL-32CX523

15

Re: Поиск и получение ссылок на rtmp поток

Вот пример на rtmpdump:

хотелось на ffmpeg.

Прикреплённые файлы сообщения

webtv.md.hdf 7.81 kb, скачивалось 607 раз, начиная с 2016.01.05

16

Re: Поиск и получение ссылок на rtmp поток

tarzann5 пишет:

Вот пример на 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" для использования этого профиля), то такой скрипт начинает работать.

Вот подкаст, у которого такой профиль уже выставлен.
Проверил, некоторые каналы не идут. Но они и на сайте, вроде бы, не идут. В общем, вот вам информация для размышления. Сам ничего толком кроме работоспособности пары каналов не проверял.

Прикреплённые файлы сообщения

webtv.md.FFMPEG.zip 3.4 kb, скачивалось 502 раза, начиная с 2016.01.08

Sony Bravia KDL-32CX523