Embed Player

Added stream modes
Unhardcoded some values
Disabled opus streams
This commit is contained in:
drigato 2015-03-23 12:37:22 -04:00
parent 5c4533d785
commit 2ae4d6c1c3
5 changed files with 67 additions and 22 deletions

View file

@ -15,7 +15,6 @@ class EmbeddablePlayerController extends Zend_Controller_Action
$this->view->headScript()->appendFile($baseUrl.'js/airtime/embeddableplayer/mrp.js?'.$CC_CONFIG['airtime_version']);
$this->view->headScript()->appendFile($baseUrl.'js/airtime/embeddableplayer/embeddableplayer.js?'.$CC_CONFIG['airtime_version']);
$form = new Application_Form_EmbeddablePlayer();
if ($form->getElement('player_stream_url')->getAttrib('numberOfEnabledStreams') > 0) {
@ -34,11 +33,11 @@ class EmbeddablePlayerController extends Zend_Controller_Action
$this->view->mrp_js = Application_Common_HTTPHelper::getStationUrl() . "js/airtime/embeddableplayer/mrp.js";
$this->view->muses_swf = Application_Common_HTTPHelper::getStationUrl() . "js/airtime/embeddableplayer/muses.swf";
$this->view->skin = Application_Common_HTTPHelper::getStationUrl() . "js/airtime/embeddableplayer/ffmp3-mcclean.xml";
$this->view->codec = $request->getParam('codec');
//$this->view->streamURL = $request->getParam('url');
//$stream = $request->getParam('stream');
$this->view->streamURL = "http://127.0.0.1:8000/airtime_128";
$stream = $request->getParam('stream');
$streamData = Application_Model_StreamSetting::getEnabledStreamData();
$selectedStreamData = $streamData[$stream];
$this->view->streamURL = $selectedStreamData["url"];
$this->view->codec = $selectedStreamData["codec"];
$this->view->displayMetadata = $request->getParam('display_metadata');
}
}

View file

@ -13,30 +13,48 @@ class Application_Form_EmbeddablePlayer extends Zend_Form_SubForm
$displayTrackMetadata->setLabel(_('Display track metadata?'));
$this->addElement($displayTrackMetadata);
$streamMode = new Zend_Form_Element_Radio('player_stream_mode');
$streamMode->setLabel(_('Select Stream:'));
$streamMode->setMultiOptions(
array(
"a" => "Use a mobile stream if possible, when appropriate. Otherwise use the highest quality stream.",
"b" => "Select a stream"
)
);
$streamMode->setValue("a");
$this->addElement($streamMode);
$streamURL = new Zend_Form_Element_Radio('player_stream_url');
$opusStreamCount = 0;
$urlOptions = Array();
foreach(Application_Model_StreamSetting::getEnabledStreamUrls() as $type => $url) {
if ($type == "opus") continue;
$urlOptions[$url] = $type;
foreach(Application_Model_StreamSetting::getEnabledStreamData() as $stream => $data) {
$urlOptions[$stream] = $data["codec"]." - ".$data["bitrate"]."kbps";
if ($data["codec"] == "opus") {
$opusStreamCount += 1;
$urlOptions[$stream] .=" - The player does not support Opus streams.";
}
}
$streamURL->setMultiOptions(
$urlOptions
);
Logging::info($urlOptions);
$streamURL->setValue(array_keys($urlOptions)[0]);
$streamURL->setLabel(_('Select stream:'));
$streamURL->setAttrib('codec', array_values($urlOptions)[0]);
$streamURL->setAttrib('numberOfEnabledStreams', sizeof($urlOptions));
$this->addElement($streamURL);
$url = $streamURL->getValue();
$codec = $streamURL->getAttrib('codec');
foreach ($urlOptions as $o => $v) {
if (strpos($v, "opus") !== false) {
continue;
} else {
$streamURL->setValue($o);
break;
}
}
$streamURL->setAttrib('numberOfEnabledStreams', sizeof($urlOptions)-$opusStreamCount);
$streamURL->setAttrib("disabled", "disabled");
$this->addElement($streamURL);
$embedSrc = new Zend_Form_Element_Text('player_embed_src');
$embedSrc->setAttrib("readonly", "readonly");
$embedSrc->setAttrib("class", "embed-player-text-box");
//$embedSrc->setValue('<iframe frameborder="0" src="'.Application_Common_HTTPHelper::getStationUrl().'embeddableplayer/embed-code?url='.$url.'&codec='.$codec.'"></iframe>');
$embedSrc->setValue('<iframe frameborder="0" src="'.Application_Common_HTTPHelper::getStationUrl().'embeddableplayer/embed-code?stream=stream1&codec='.$codec.'"></iframe>');
$embedSrc->setValue('<iframe frameborder="0" src="'.Application_Common_HTTPHelper::getStationUrl().'embeddableplayer/embed-code?stream-mode=a"></iframe>');
$embedSrc->removeDecorator('label');
$this->addElement($embedSrc);

View file

@ -78,6 +78,25 @@ class Application_Model_StreamSetting
return $urls;
}
public static function getEnabledStreamData()
{
$streams = Array();
$streamIds = self::getEnabledStreamIds();
foreach ($streamIds as $id) {
$streamData = self::getStreamData($id);
$prefix = $id."_";
$host = $streamData[$prefix."host"];
$port = $streamData[$prefix."port"];
$mount = $streamData[$prefix."mount"];
$streams[$id] = Array(
"url" => "http://$host:$port/$mount",
"codec" => $streamData[$prefix."type"],
"bitrate" => $streamData[$prefix."bitrate"]
);
}
return $streams;
}
/* Returns the id's of all streams that are enabled in an array. An
* example of the array returned in JSON notation is ["s1", "s2", "s3"] */
public static function getEnabledStreamIds()

View file

@ -5,6 +5,8 @@
<?php echo $this->element->getElement('player_display_track_metadata'); ?>
<?php echo $this->element->getElement('player_stream_mode'); ?>
<?php echo $this->element->getElement('player_stream_url'); ?>
<?php echo $this->element->getElement('player_preview_label')->renderLabel(); ?>

View file

@ -1,4 +1,4 @@
function generateEmbedSrc()
function updateEmbedSrcParams()
{
var $embedCodeParams = "?";
var $streamMode = getStreamMode();
@ -20,19 +20,26 @@ function getStreamMode() {
}
$(document).ready(function() {
$("#player_stream_mode-element").change(function() {
var $streamMode = getStreamMode();
if ($streamMode == "a") {
$("#player_stream_url-element input[type='radio']").attr("disabled", "disabled");
} else if ($streamMode == "b") {
$("#player_stream_url-element input[type='radio']").removeAttr("disabled");
$("input[name=player_stream_url]").each(function(i, obj) {
if ($(this).parent().text().indexOf("opus") >= 0) {
$(this).attr("disabled", "disabled");
}
});
}
generateEmbedSrc();
updateEmbedSrcParams();
});
$("#player_stream_url-element").change(function() {
generateEmbedSrc();
updateEmbedSrcParams();
});
});