protected function listOutput() { $this->markTestIncomplete("incomplete"); foreach (Output::getListAll() as $output) { $this->checkOutput($output); } }
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); }
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; }
$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);
/** * @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);