среда, 11 января 2012 г.

Смотрим rtmp Online TV в XBMC

озадачился созданием списка онлайн каналов, да так, чтоб не на сайте смотреть, а иметь ссылки-источники на любой случай. хочешь VLC смотри, хочешь в XBMC пихай

в особо простых случаях смотрим исходник страницы, выдираем из ebmed url источника и проверяем его валидность, открывая в VLC

в случаях посложнее имеем rtmp (rtsp, rtmpe, etc..) поток, транслируемый flash-плеером на странице. просто так rtmp://url VLC плееру скормить не всегда удается, приходится изворачиваться. например используя прогу rtmpdump.
пример batch-команды  для просмотра онлайн трансляции Discovery:

C:\> <path_to_rtmpdump>\rtmpdump.exe --rtmp "rtmpe://95.67.65.135:1935/rtplive/" --swfUrl "http://intv.ua/jwplayer/player.swf" --playpath "discoveryeurope_m.stream" | "<path_to_vlc>\vlc.exe" -

показывает, зашибись, но хочется больше, а именно: имеется довольно плотно используемый XBMC медиацентр с удобным пультом, где и хотелось бы наблюдать плейлист онлайн ТВ

здесь пришлось немного порыскать в инете
нашелся плагин plugin.video.live.streams (http://forum.xbmc.org/showthread.php?t=97116)
плагин просто так не завелся, было выяснено, что не любит он очень языка русского, как в ФС-путях, так и в названиях источников, а поскольку у меня под виндой имя пользователя по-русски (Администратор, ага), то эти грабли были всецело мои
разбираться плотно было некогда, пришлось грязно прописать в <%APPDATA%>\XBMC\addons\plugin.video.live.streams\default.py свой source_file следующим образом
source_file = 'C:\\Documents and settings\\Администратор\\XBMC\\userdata\\addon_data\\plugin.video.live.streams\\source_file'
причем кодировка файла - ANSI

после этих небольших плясок создаем где-нить xml-файл со списком найденных на просторах инета rtmp трансляций, например такой:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<items>
<item>
<title>Discovery</title>
<link>rtmp://95.67.65.135:1935/rtplive swfUrl=http://intv.ua/jwplayer/player.swf playpath=discoveryeurope_m.stream</link>
</item>
</items>
ну и в плагине выбираем его в качестве источника и вуаля!

P.S. пример: заходим на videohlam.tv, выбираем канал, в <object> видим что-то вроде
config={"plugins":{"rtmp":{"url":"/swf/flowplayer.rtmp-3.2.3.swf","netConnectionUrl":"rtmp://stream3.optizone.ru:1935/rtmp","durationFunc":"getStreamLength"}},"clip":{"provider":"rtmp","scaling":"fit","autoPlay":"true"},"playlist":[{"url":"stream/vlc45.ts","provider":"rtmp","scaling":"fit","autoPlay":"true"}],"key":"#$ed0988d801182c22a8f","autoPlay":false,"playerId":"player"}
отсюда находим, что URL сформируется как
rtmp://stream3.optizone.ru:1935/rtmp swfUrl=http://videohlam.tv/swf/flowplayer.rtmp-3.2.3.swf playpath=stream/vlc45.ts pageUrl=http://www.videohlam.ru/tv

Напоследок, мой плейлист онлайн-телеканалов:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<items>
    <item>
        <title>Discovery</title>
        <link>rtmp://95.67.65.135:1935/rtplive swfUrl=http://intv.ua/jwplayer/player.swf playpath=discoveryeurope_m.stream</link>
    </item>
    <item>
        <title>2x2</title>
        <link>rtmp://stream3.optizone.ru:1935/rtmp swfUrl=http://www.videohlam.ru/swf/flowplayer.rtmp-3.2.3.swf playpath=stream/vlc45.ts pageUrl=http://www.videohlam.ru/tv</link>
    </item>
    <item>
        <title>Россия 24</title>
        <link>mmsh://live.rfn.ru/r24_hq</link>
    </item>
    <item>
        <title>ОРТ</title>
        <link>rtsp://213.186.127.42:1935/live/_definst_/first.stream</link>
    </item>
    <item>
        <title>HDprocessCDN</title>
        <link>rtmp://194.63.143.117:80/live/_definst_/HDprocessCDN</link>
    </item>
    <item>
        <title>HDtravelCDN</title>
        <link>rtmp://194.63.143.117:80/live/_definst_/HDtravelCDN</link>
    </item>
    <item>
        <title>HDextremeCDN</title>
        <link>rtmp://194.63.143.117:80/live/_definst_/HDextremeCDN</link>
    </item>
    <item>
        <title>NRJ Pure</title>
        <link>rtmp://nrjlivefs.fplive.net:443/nrjlive-live/nrjpure swfUrl=http://www.nrj.fr/swf/player/videos_live/index.swf live=1</link>
    </item>
    <item>
        <title>Podsekai TV HD</title>
        <link>rtmp://217.199.218.151:1935/podsekaiTV/chanelHD</link>
        <genre>Fishing</genre>
        <date>01.01.2012</date>
        <info>Интернет-канал о рыбалке</info>
    </item>
    <item>
        <title>Podsekai TV HD 1080</title>
        <link>rtmp://217.199.218.151:1935/podsekaiTV/chanelHD1080</link>
    </item>
    <item>
        <title>BBC World</title>
        <link>rtmp://media2.lsops.net/live/ playpath=bbcworld1_en_high.sdp swfUrl="http://www.livestation.com/flash/player/5.4/player.swf" pageUrl="http://www.livestation.com/channels/10-bbc-world-news-english" swfVfy=true live=true</link>
        <thumbnail>http://www.bbcworldnews.com/Pages/Images/Assets/9ee0304f-37db-40d1-8e11-26b7d46ce1df.jpg</thumbnail>
    </item>
    <item>
        <title>RT English</title>
        <link>rtmp://fms5.visionip.tv/live app=live swfUrl=http://rt.com/s/swf/player5.4.viral.swf pageURL=http://rt.com/on-air/ playpath=RT_3 live=true</link>
        <thumbnail>http://profile.ak.fbcdn.net/hprofile-ak-snc4/27535_326683984410_1715_n.jpg</thumbnail>
    </item>
</items>

5 комментариев:

  1. Не получается запустить "rtmp".
    Можно привести конкретный пример кода?
    Имею
    ----------------------------------------------
    C:\rtmpdump\rtmpdump.exe
    C:\VLCPortable\VLCPortable.exe
    с сайта http://tvforsite.ru/rus/index.php
    взят линк rtmpe://130.185.113.66/14/channel_14.sdp
    ----------------------------------------------
    как будет выглядеть код для запуска в VLC(или еще лучше в простом браузере)?

    ОтветитьУдалить
  2. UPD: Discovery отвалился и больше не показывает
    а тут много rtmp ссылок http://iptv.gen12.net/bugtracker/view.php?id=329

    ОтветитьУдалить
    Ответы
    1. Сорри, но у меня проблема в другом. Найти rtmp я могу. У меня не получается просмотреть этот линк.

      Имею
      ----------------------------------------------
      C:\rtmpdump\rtmpdump.exe
      C:\VLCPortable\VLCPortable.exe
      линк rtmpe://MMM
      ----------------------------------------------
      Можно привести конкретный пример кода?
      как будет выглядеть код для запуска в VLC(или еще лучше в простом браузере)?

      Удалить
    2. D:\progs>rtmpdump\rtmpdump.exe -r rtmp://stream3.optizone.ru:1935/rtmp --swfUrl=
      http://www.videohlam.ru/swf/flowplayer.rtmp-3.2.3.swf --playpath=stream/vlc45.ts
      --pageUrl=http://www.videohlam.ru/tv | VLC\vlc.exe -

      вариант с tvforsite запустить не получается

      Удалить
  3. UPD: смотреть канал Discovery онлайн снова можно! ссылка для воспроизведения через VLC/Mplayer http://iptv.seite.ru/tvkanal.php?kanal=34

    ОтветитьУдалить