diff options
author | TheTroll <trolldev@gmail.com> | 2010-03-17 13:20:30 +0100 |
---|---|---|
committer | TheTroll <trolldev@gmail.com> | 2010-03-17 13:20:30 +0100 |
commit | d890fd4beb74429626b3d49b008b645889f8bbe0 (patch) | |
tree | eddc7877f449636d923f1ffdecaf460dc5d75017 /bin/session.php | |
parent | 2699eecff7856183c6f0ef45a5e1eab2cf92d6e0 (diff) | |
download | istreamdev-d890fd4beb74429626b3d49b008b645889f8bbe0.tar.gz istreamdev-d890fd4beb74429626b3d49b008b645889f8bbe0.tar.bz2 |
Implemented startBroacast
PHP files cleanup
Diffstat (limited to 'bin/session.php')
-rwxr-xr-x | bin/session.php | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/bin/session.php b/bin/session.php new file mode 100755 index 0000000..8b998d2 --- /dev/null +++ b/bin/session.php @@ -0,0 +1,118 @@ +<?php + +function sessioncreate($type, $url, $mode) +{ + global $httppath, $ffmpegpath, $segmenterpath, $quality; + + // Get a free session + $i=0; + for ($i=0; $i<1000; $i++) + { + $session = "session" .$i; + if (!file_exists('../ram/' .$session)) + break; + } + + // Default + $qparams = $quality[0]; + + // Get parameters + foreach ($quality as $qn => $qp) + { + if ($qn == $mode) + { + $qparams = $qp; + break; + } + } + + // Create session + exec('mkdir ../ram/' .$session); + $url = str_replace("\\'", "'", $url); + switch ($type) + { + case 'tv': + $cmd = "export SHELL=\"/bin/sh\";printf \"./istream.sh \\\"" .$url ."\\\" " .$qparams ." " .$httppath ." 2 " .$ffmpegpath ." " .$segmenterpath ." " .$session ." \" | at now"; + break; + case 'rec': + $cmd = "export SHELL=\"/bin/sh\";printf \"cat \\\"" .$url ."\\\"/0* | ./istream.sh - " .$qparams ." " .$httppath ." 1260 " .$ffmpegpath ." " .$segmenterpath ." " .$session ." \" | at now"; + break; + case 'vid': + $cmd = "export SHELL=\"/bin/sh\";printf \"./istream.sh \\\"" .$url ."\\\" " .$qparams ." " .$httppath ." 1260 " .$ffmpegpath ." " .$segmenterpath ." " .$session ." \" | at now"; + break; + default: + $cmd = ""; + } + + $cmd = str_replace('%', '%%', $cmd); + exec ('echo "' .$cmd .'" > /tmp/a'); + exec ($cmd); + + // Extract $channame if needed + switch ($type) + { + case 'tv': + $urlarray = explode("/", $url); + $channum = $urlarray[count($urlarray)-1]; + $channame = vdrgetchanname($channum); + break; + case 'rec': + list($channame, $title, $desc) = vdrgetrecinfo($url); + break; + default: + $channame = ""; + break; + } + + // Write streaminfo + writeinfostream($session, $type, $mode, $url, $channame); + + // Create logo + if ($type == 'vid') + generatelogo($type, $url, '../ram/' .$session .'/logo.png'); + else + generatelogo($type, $channame, '../ram/' .$session .'/logo.png'); + + return $session; +} + +function sessiondelete($session) +{ + if ($session == 'all') + { + $dir_handle = @opendir('../ram/'); + if ($dir_handle) + { + while ($session = readdir($dir_handle)) + { + if($session == "." || $session == ".." || $session == 'lost+found') + continue; + + if (!is_dir('../ram/' .$session)) + continue; + + // Get info + list($type, $mode, $url, $channame) = readinfostream($session); + + if ($type) + sessiondeletesingle($session); + } + } + } + else + return sessiondeletesingle($session); +} + +function sessiondeletesingle($session) +{ + $ram = "../ram/" .$session ."/"; + + // Get segmenter PID if any + if (file_exists($ram ."segmenter.pid")) + $cmd = "/usr/local/bin/fw;kill `cat " .$ram ."segmenter.pid`; rm " .$ram ."segmenter.pid; "; + + $cmd .= "rm -rf " .$ram; + exec ($cmd); +} + +?> |