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