protected function listOutput()
 {
     $this->markTestIncomplete("incomplete");
     foreach (Output::getListAll() as $output) {
         $this->checkOutput($output);
     }
 }
Example #2
0
 public function view($page = 'overview')
 {
     if (!file_exists(APPPATH . '/views/pages/' . $page . '.php')) {
         show_404();
     }
     $data['title'] = ucfirst($page);
     $data['api_key'] = $this->session->api_key;
     $data['api_url'] = Bitcodin::getBaseUrl();
     if (!isset($this->session->page_limit) or !is_numeric($this->session->page_limit)) {
         $this->session->page_limit = 10;
     }
     $data['page_limit'] = $this->session->page_limit;
     $page_files = get_filenames(APPPATH . '/views/pages');
     $menu_items = array();
     foreach ($page_files as $file) {
         $name = basename($file, '.php');
         $menu_items[] = ucfirst($name);
     }
     $index = array_search('Home', $menu_items);
     $home = $menu_items[$index];
     unset($menu_items[$index]);
     array_unshift($menu_items, $home);
     if ($page == 'overview') {
         Bitcodin::setApiToken($this->session->api_key);
         try {
             $encodingProfiles = EncodingProfile::getListAll();
             if (count($encodingProfiles) <= 0) {
                 $encProf = new \stdClass();
                 $encProf->encodingProfileId = 0;
                 $encProf->name = "No encoding profile available";
                 $encodingProfiles = array("No encoding profiles found");
             }
             $outputs = Output::getListAll();
             if (count($outputs) <= 0) {
                 $output = new \stdClass();
                 $output->outputId = 0;
                 $output->name = "No output available";
                 $outputs = array($output);
             }
         } catch (BitcodinException $ex) {
             $output = new \stdClass();
             $output->outputId = 0;
             $output->name = "No output available";
             $outputs = array($output);
             $encProf = new \stdClass();
             $encProf->encodingProfileId = 0;
             $encProf->name = "No encoding profile available";
             $encodingProfiles = array($encProf);
         }
         $data['encodingProfiles'] = $encodingProfiles;
         $data['outputs'] = $outputs;
     }
     $data['menu_items'] = $menu_items;
     $this->load->view('templates/header', $data);
     $this->load->view('pages/' . $page, $data);
     $this->load->view('templates/footer', $data);
 }
Example #3
0
 public function create($label, $streamKey, $encProfId, $outputId, $timeshift)
 {
     Bitcodin::setApiToken($this->session->api_key);
     try {
         Bitcodin::setApiToken($this->session->api_key);
         $encProf = EncodingProfile::get($encProfId);
         $output = Output::get($outputId);
         LiveStream::create($label, $streamKey, $encProf, $output, $timeshift);
     } catch (\Exception $ex) {
         echo "<div class='top-buffer'></div><div class='alert alert-danger' role='alert'>" . $ex->getMessage() . "</div>";
     }
     redirect('overview');
 }
 protected function transferJob(Job $job)
 {
     $s3Config = $this->getKey('s3output');
     $outputConfig = new S3OutputConfig();
     $outputConfig->accessKey = $s3Config->accessKey;
     $outputConfig->secretKey = $s3Config->secretKey;
     $outputConfig->name = $s3Config->name;
     $outputConfig->bucket = $s3Config->bucket;
     $outputConfig->region = $s3Config->region;
     $outputConfig->makePublic = false;
     $output = Output::create($outputConfig);
     /* WAIT TIL JOB IS FINISHED */
     $job->transfer($output);
 }
 /**
  * @test
  * @return Output
  */
 public function createLiveStreamOutput()
 {
     $gcsOutputConfig = $this::getKey("gcsOutput");
     $outputConfig = new GcsOutputConfig();
     $outputConfig->accessKey = $gcsOutputConfig->accessKey;
     $outputConfig->secretKey = $gcsOutputConfig->secretKey;
     $outputConfig->bucket = $gcsOutputConfig->bucket;
     $outputConfig->name = "bitcodin-php GCS Output";
     $outputConfig->prefix = "bitcodin-php";
     $outputConfig->makePublic = true;
     $output = Output::create($outputConfig);
     $this->assertNotNull($output);
     return $output;
 }
Example #6
0
$videoStreamConfig3 = new VideoStreamConfig();
$videoStreamConfig3->bitrate = 1200000;
$videoStreamConfig3->height = 480;
$videoStreamConfig3->width = 854;
$encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig3;
/* CREATE AUDIO STREAM CONFIGS */
$audioStreamConfig = new AudioStreamConfig();
$audioStreamConfig->bitrate = 256000;
$encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig;
/* CREATE ENCODING PROFILE */
$encodingProfile = EncodingProfile::create($encodingProfileConfig);
$jobConfig = new JobConfig();
$jobConfig->encodingProfile = $encodingProfile;
$jobConfig->input = $input;
$jobConfig->speed = JobSpeedTypes::STANDARD;
$jobConfig->manifestTypes[] = ManifestTypes::MPD;
$jobConfig->manifestTypes[] = ManifestTypes::M3U8;
/* CREATE JOB */
$job = Job::create($jobConfig);
/* WAIT TIL JOB IS FINISHED */
do {
    $job->update();
    sleep(1);
} while ($job->status != Job::STATUS_FINISHED && $job->status != Job::STATUS_ERROR);
$outputConfig = new AzureOutputConfig();
$outputConfig->name = "TestAzureOutput";
$outputConfig->container = $azureBlobStorageContainer;
$outputConfig->accountKey = $azureBlobStorageAccountKey;
$outputConfig->accountName = $azureBlobStorageAccountName;
$azureOutput = Output::create($outputConfig);
$job->transfer($azureOutput);
Example #7
0
 /**
  * @depends create
  *
  * @param Output $output
  *
  * @return Output
  */
 public function update(Output $output)
 {
     $output->update();
     $this->checkOutput($output);
     return $output;
 }
/* CREATE AUDIO STREAM CONFIGS */
$audio = new \bitcodin\AudioStreamConfig();
$audio->bitrate = 128000;
$encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig;
$encodingProfileConfig->audioStreamConfigs[] = $audio;
/* CREATE ENCODING PROFILE */
$encodingProfile = \bitcodin\EncodingProfile::create($encodingProfileConfig);
/* CREATE OUTPUT */
$outputConfig = new \bitcodin\S3OutputConfig();
$outputConfig->name = "Livestream Output Config";
$outputConfig->accessKey = "YOUR ACCESS KEY";
$outputConfig->secretKey = "YOUR SECRET KEY";
$outputConfig->bucket = "YOUR BUCKETNAME";
$outputConfig->prefix = "livestream" . $namingPostfix;
$outputConfig->makePublic = true;
$output = \bitcodin\Output::create($outputConfig);
/* CREATE LIVE STREAM */
$livestreamName = "livestream-test-" . $namingPostfix;
$livestreamStreamKey = "livestreamtestone";
$timeShift = 30;
$liveEdgeOffset = 10;
// Defines the offset in seconds to the time the first segment of your livestream was available. Value range: 1 to 3600
$liveInstance = \bitcodin\LiveStream::create($livestreamName, $livestreamStreamKey, $encodingProfile, $output, $timeShift, $liveEdgeOffset);
echo "Waiting until live stream is RUNNING...\n";
while ($liveInstance->status != $liveInstance::STATUS_RUNNING) {
    sleep(2);
    $liveInstance->update();
    if ($liveInstance->status == $liveInstance::STATUS_ERROR) {
        echo "ERROR occurred!";
        throw new \Exception("Error occurred during Live stream creation");
    }
<?php

require_once __DIR__ . '/../vendor/autoload.php';
/* CONFIGURATION */
bitcodin\Bitcodin::setApiToken('insertYourApiKey');
// Your can find your api key in the settings menu. Your account (right corner) -> Settings -> API
$jobId = 123456;
//ENTER THE THE ID OF THE ENCODING YOU WANT TO TRANSFER
$outputId = 123456;
//ENTER THE THE ID OF THE OUTPUT YOU WANT YOUR ENCODING TRANSFERRED TO
$encoding = bitcodin\Job::get($jobId);
$output = \bitcodin\Output::get($outputId);
$response = $encoding->transfer($output);
var_dump($response);