CC-1665: Scheduled stream rebroadcasting and recording

-step 1 of getting stream preview on show builder working
This commit is contained in:
Martin Konecny 2012-08-09 17:42:25 -04:00
parent c73328e297
commit 4129900858
4 changed files with 81 additions and 69 deletions

View file

@ -272,6 +272,8 @@ class AudiopreviewController extends Zend_Controller_Action
'element_id' => ++$position, 'element_id' => ++$position,
); );
$elementMap['type'] = $track['type'];
if ($track['type'] == 0) {
$fileExtension = pathinfo($track['filepath'], PATHINFO_EXTENSION); $fileExtension = pathinfo($track['filepath'], PATHINFO_EXTENSION);
if (strtolower($fileExtension) === 'mp3') { if (strtolower($fileExtension) === 'mp3') {
$elementMap['element_mp3'] = $track['item_id']; $elementMap['element_mp3'] = $track['item_id'];
@ -279,6 +281,12 @@ class AudiopreviewController extends Zend_Controller_Action
$elementMap['element_oga'] = $track['item_id']; $elementMap['element_oga'] = $track['item_id'];
} else { } else {
//the media was neither mp3 or ogg //the media was neither mp3 or ogg
throw new Exception("Unknown file type");
}
$elementMap['uri'] = "/api/get-media/file/".$track['item_id'];
} else {
$elementMap['uri'] = $track['path'];
} }
$result[] = $elementMap; $result[] = $elementMap;
} }

View file

@ -154,40 +154,67 @@ class Application_Model_Playlist
public function getContents($filterFiles=false) public function getContents($filterFiles=false)
{ {
Logging::log("Getting contents for playlist {$this->id}"); Logging::log("Getting contents for playlist {$this->id}");
$files = array(); $files = array();
/*
$query = CcPlaylistcontentsQuery::create()
->filterByDbPlaylistId($this->id);
if ($filterFiles) { $sql = <<<SQL
$query->useCcFilesQuery() (SELECT *
->filterByDbFileExists(true) FROM (
->endUse(); (SELECT pc.id AS id,
} pc.type,
$query->orderByDbPosition() pc.position,
->filterByDbType(0) pc.cliplength AS LENGTH,
->leftJoinWith('CcFiles'); pc.cuein,
$rows = $query->find($this->con); pc.cueout,
*/ pc.fadein,
$sql = <<<"EOT" pc.fadeout,
(SELECT * FROM f.id AS item_id,
((SELECT pc.id as id, pc.type, pc.position, pc.cliplength as length, pc.cuein, pc.cueout, pc.fadein, pc.fadeout, f.track_title,
f.id as item_id, f.track_title, f.artist_name as creator, f.file_exists as exists, f.filepath as path FROM cc_playlistcontents AS pc f.artist_name AS creator,
JOIN cc_files AS f ON pc.file_id=f.id WHERE pc.playlist_id = {$this->id} AND type = 0) f.file_exists AS EXISTS,
f.filepath AS path
FROM cc_playlistcontents AS pc
JOIN cc_files AS f ON pc.file_id=f.id
WHERE pc.playlist_id = {$this->id}
AND TYPE = 0)
UNION ALL UNION ALL
(SELECT pc.id as id, pc.type, pc.position, pc.cliplength as length, pc.cuein, pc.cueout, pc.fadein, pc.fadeout, (SELECT pc.id AS id,
ws.id as item_id, (ws.name || ': ' || ws.url) as title, sub.login as creator, 't'::boolean as exists, ws.url as path FROM cc_playlistcontents AS pc pc.TYPE, pc.position,
JOIN cc_webstream AS ws on pc.stream_id=ws.id pc.cliplength AS LENGTH,
LEFT JOIN cc_subjs as sub on sub.id = ws.creator_id pc.cuein,
WHERE pc.playlist_id = {$this->id} AND pc.type = 1) pc.cueout,
pc.fadein,
pc.fadeout,
ws.id AS item_id,
(ws.name || ': ' || ws.url) AS title,
sub.login AS creator,
't'::boolean AS EXISTS,
ws.url AS path
FROM cc_playlistcontents AS pc
JOIN cc_webstream AS ws ON pc.stream_id=ws.id
LEFT JOIN cc_subjs AS sub ON sub.id = ws.creator_id
WHERE pc.playlist_id = {$this->id}
AND pc.TYPE = 1)
UNION ALL UNION ALL
(SELECT pc.id as id, pc.type, pc.position, pc.cliplength as length, pc.cuein, pc.cueout, pc.fadein, pc.fadeout, (SELECT pc.id AS id,
bl.id as item_id, bl.name as title, sbj.login as creator, 't'::boolean as exists, NULL::text as path FROM cc_playlistcontents AS pc pc.TYPE, pc.position,
JOIN cc_block AS bl on pc.block_id=bl.id pc.cliplength AS LENGTH,
JOIN cc_subjs as sbj ON bl.creator_id=sbj.id WHERE pc.playlist_id = {$this->id} AND pc.type = 2)) as temp pc.cuein,
pc.cueout,
pc.fadein,
pc.fadeout,
bl.id AS item_id,
bl.name AS title,
sbj.login AS creator,
't'::boolean AS EXISTS,
NULL::text AS path
FROM cc_playlistcontents AS pc
JOIN cc_block AS bl ON pc.block_id=bl.id
JOIN cc_subjs AS sbj ON bl.creator_id=sbj.id
WHERE pc.playlist_id = {$this->id}
AND pc.TYPE = 2)) AS temp
ORDER BY temp.position); ORDER BY temp.position);
EOT; SQL;
$con = Propel::getConnection(); $con = Propel::getConnection();
$rows = $con->query($sql)->fetchAll(); $rows = $con->query($sql)->fetchAll();
@ -210,28 +237,6 @@ EOT;
$row['offset'] = $formatter->format(); $row['offset'] = $formatter->format();
} }
/*
$i = 0;
$offset = 0;
foreach ($rows as $row) {
Logging::log($row);
$files[$i] = $row->toArray(BasePeer::TYPE_FIELDNAME, true, true);
$clipSec = Application_Common_DateHelper::playlistTimeToSeconds($files[$i]['cliplength']);
$offset += $clipSec;
$offset_cliplength = Application_Common_DateHelper::secondsToPlaylistTime($offset);
//format the length for UI.
$formatter = new LengthFormatter($files[$i]['cliplength']);
$files[$i]['cliplength'] = $formatter->format();
$formatter = new LengthFormatter($offset_cliplength);
$files[$i]['offset'] = $formatter->format();
$i++;
}
*/
return $rows; return $rows;
} }

View file

@ -653,9 +653,8 @@ class Application_Model_ShowInstance
WHERE s.instance_id = '{$this->_instanceId}' AND s.playout_status >= 0 WHERE s.instance_id = '{$this->_instanceId}' AND s.playout_status >= 0
ORDER BY starts"; ORDER BY starts";
//Logging::log($sql);
$results = $con->query($sql)->fetchAll(); $results = $con->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as &$row) { foreach ($results as &$row) {

View file

@ -111,8 +111,9 @@ function playAllShow(p_showID, p_index) {
} }
/** /**
* This function will call the AudiopreviewController to get the contents of either a show or playlist * This function will call the AudiopreviewController to get the contents of
* Looping throught the returned contents and creating media for each track. * either a show or playlist Looping throught the returned contents and
* creating media for each track.
* *
* Then trigger the jplayer to play the list. * Then trigger the jplayer to play the list.
*/ */
@ -124,7 +125,6 @@ function buildplaylist(p_url, p_playIndex) {
var index; var index;
var total = 0; var total = 0;
for(index in data) { for(index in data) {
if (data[index]['type'] == 0) { if (data[index]['type'] == 0) {
if (data[index]['element_mp3'] != undefined){ if (data[index]['element_mp3'] != undefined){
media = {title: data[index]['element_title'], media = {title: data[index]['element_title'],
@ -146,8 +146,8 @@ function buildplaylist(p_url, p_playIndex) {
if (media) { if (media) {
myPlaylist[index] = media; myPlaylist[index] = media;
} }
// we should create a map according to the new position in the player itself // we should create a map according to the new position in the
// total is the index on the player // player itself total is the index on the player
_idToPostionLookUp[data[index]['element_id']] = total; _idToPostionLookUp[data[index]['element_id']] = total;
total++; total++;
} }