Zanonimizowana wersja forum tylko do odczytu

Przykład skryptów wznawiających restreaming po błedzie

Dyskusje związane z popularnymi dystrybucjami systemów unix'owych.
anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Przykład skryptów wznawiających restreaming po błedzie

Post by anonim »

Ze względu na powtarzające się pytania odnośnie odnawiania re-streaming'u po błędzie podaje przykłady jak zrobić proste pętle które wznowią działanie.

W pierwszych dwóch przykładach potrzebujemy php, łatwo je zainstalować:
root@jarek:~# chmod apt-get install php5 php5-cli php5-curl libapache2-mod-php5
Jak widać polecam nie tylko podstawowy pakiet ze względu na przydatność.


Przykład rtmpdump + ffmpeg (plik.php)

Code: Select all

<?
   while( 1 == 1 ) {
      //wejście
      $rtmp_in = 'rtmp://31.220.0.196:1935/live';
      $playpath = 'b11r';
      $pageUrl =  'http://www.eucast.tv/embed.php?live=b11r&vw=620&vh=490';
      $swfUrl = 'http://p.jwpcdn.com/6/8/jwplayer.flash.swf';      
      //wyjście
      $rtmp_out = 'rtmp://localhost:1935/live/test';
      //działanie
      $start = 'rtmpdump -r "'.$rtmp_in.'" -W "'.$swfUrl.'" -p "'.$pageUrl.'" -y "'.$playpath.'" --live -o- | ffmpeg -i - -acodec copy -vcodec copy -f flv "'.$rtmp_out.'"';
      exec($start);
   }
   ?>

uruchomienie
root@jarek:~# chmod +x plik.php
root@jarek:~# php plik.php

Przykład ffmpeg (plik.php)

Code: Select all

   <?
   while( 1 == 1 ) {
      //wejście
      $rtmp_in = 'rtmp://195.154.211.140:80/live playpath=file:by7xnes5w  swfUrl=http://www.byetv.org/jwplayer/jwplayer.flash.swf  pageUrl=http://www.byetv.org/embed.php?a=1692&id=&width=580&height=400&autostart=true&strech=exactfit';
      //wyjście
      $rtmp_out = 'rtmp://localhost:1935/live/test';
      //działanie
      $start = 'ffmpeg -i "'.$rtmp_in.'" -acodec copy -vcodec copy -f flv "'.$rtmp_out.'"';
      exec($start);
   }
   ?>

uruchomienie
root@jarek:~# chmod +x plik.php
root@jarek:~# php plik.php


Przykład ffmpeg (plik.sh)

Code: Select all

#!/bin/bash
until 1=1; do
ffmpeg -i "rtmp://195.154.211.140:80/live playpath=file:by7xnes5w  swfUrl=http://www.byetv.org/jwplayer/jwplayer.flash.swf  pageUrl=http://www.byetv.org/embed.php?a=1692&id=&width=580&height=400&autostart=true&strech=exactfit" -acodec copy -vcodec copy  -f flv rtmp://localhost:1935/live/test
done   

uruchomienie
root@jarek:~# chmod +x plik.sh
root@jarek:~# ./plik.sh


All in one czyli skrypt pozwalający osadzić wiele kanałów w jednym pliku php (plik.php)

Code: Select all

<?php
   while( 1 == 1 ) {
      $kanaly = array
      (
         'kanal1' => array
         (
            'nazwa' => 'kanal1',
            'wejscie' => 'rtmp://wejsciowe/live/test',
            'wyjscie' => 'rtmp://wyjsciowe/live/test',

         ),
         
         'kanal2' => array
         (   
            'nazwa' => 'kanal2',
            'wejscie' => 'rtmp://wejsciowe/live/test',
            'wyjscie' => 'rtmp://wyjsciowe2/live/test',

         ),
               
      );

      foreach($kanaly as $n => $k)
      {
         $szukaj = exec('ps -ef | grep SCREEN | grep " '.$k['nazwa'].' " | wc -l');

         if($szukaj == 1)
         {
            echo 'Kanal o nazwie "'.$k['nazwa'].'" nie dziala - odpalam!'.PHP_EOL;
            exec("screen -AmdS ".$k['nazwa']." ffmpeg -i ".$k['wejscie']." -acodec copy -vcodec copy -f flv ".$k['wyjscie']);
         }
         else
         {
            echo 'Kanal o nazwie "'.$k['nazwa'].'" jest online!'.PHP_EOL;
         }
         sleep(2);
      }
   }
?>

uruchomienie
root@jarek:~# chmod +x plik.sh
root@jarek:~# ./plik.sh
Last edited by anonim on 2014-06-08, 07:12, edited 3 times in total.

anonim
Aktywny Użytkownik
Posts: 369
Joined: 2014-01-01, 15:38
Location: Polska
Contact:

Post by anonim »

Oj, Jarek, powtarzasz się :-P

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

AndrzejZbity, starość nie radość to troszkę inne przykłady też są ;-)

anonim
Weteran
Posts: 932
Joined: 2013-09-04, 17:49

Post by anonim »

Powtarza sie moze i tak ale sa tez inne te php ktorych nie podawal jako tako wczesniej.

anonim
Bywalec
Posts: 211
Joined: 2014-05-21, 00:38

Post by anonim »

pytanko do pliku ffmpeg.sh da sie umieścić więcej stream-ow

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

Jak umieścisz więcej to najpierw będzie odtwarzać się pierwszy plik potem drugi itd ;-)

anonim
Weteran
Posts: 932
Joined: 2013-09-04, 17:49

Post by anonim »

A co niechce ci sie plikow tworzyc

anonim
Bywalec
Posts: 211
Joined: 2014-05-21, 00:38

Post by anonim »

użyłem skryptu ffmpeg.sh po jakimś czasie dostałem

Code: Select all

ERROR: RTMP_ReadPacket, failed to read RTMP packet header


co zrobić żeby się zrestartował ?

anonim
Weteran
Posts: 932
Joined: 2013-09-04, 17:49

Post by anonim »

Po to jest skrypt sh z pętlą nic sie nie robi tylko uruchamia w tym skrypcie

anonim
Bywalec
Posts: 211
Joined: 2014-05-21, 00:38

Post by anonim »

no to uruchomiłem startstream.sh wszystko git zapętlał i nagle ten error i terminal stoi na tym błędzie nie restartuje się.

anonim
Bywalec
Posts: 206
Joined: 2013-10-07, 22:18
Contact:

Post by anonim »

Len1o, Stream na pewno działa ? W sensie, czy jest on-line ? ;-)

anonim
Weteran
Posts: 932
Joined: 2013-09-04, 17:49

Post by anonim »

Moze byc tez opcja ze dostal bana jesli nadaje na jakis zewnetrzny serwis

anonim
Bywalec
Posts: 211
Joined: 2014-05-21, 00:38

Post by anonim »

zamknąłem terminal otworzyłem ponownie działa czekam znowu na ten błąd

[ Dodano: 2014-06-01, 15:15 ]
dobra juz wiem ze stream padl i dlatego taki error czy jak wstanie to sie uruchomi ponownie czy bede musial odpalic ten skrypt jeszcze raz ?

anonim
Aktywny Użytkownik
Posts: 369
Joined: 2014-01-01, 15:38
Location: Polska
Contact:

Post by anonim »

Powinien wstać, przecież od tego jest pętla ;-)

anonim
Bywalec
Posts: 211
Joined: 2014-05-21, 00:38

Post by anonim »

Nic stoi na tym bledzie da rade to resnac

Post Reply