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 Job */ public function createJob() { $inputConfig = new HttpInputConfig(); $inputConfig->url = self::URL_FILE; $input = Input::create($inputConfig); /* CREATE VIDEO STREAM CONFIG */ $videoStreamConfig = new VideoStreamConfig(); $videoStreamConfig->bitrate = 1024000; $videoStreamConfig->height = 202; $videoStreamConfig->width = 480; /* CREATE AUDIO STREAM CONFIGS */ $audioStreamConfig = new AudioStreamConfig(); $audioStreamConfig->bitrate = 256000; $encodingProfileConfig = new EncodingProfileConfig(); $encodingProfileConfig->name = $this->getName() . 'EncodingProfile'; $encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig; $encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig; /* CREATE ENCODING PROFILE */ $encodingProfile = EncodingProfile::create($encodingProfileConfig); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->manifestTypes[] = ManifestTypes::MPD; /* CREATE JOB */ $job = Job::create($jobConfig); $this->assertInstanceOf(Job::class, $job); $this->assertNotNull($job->jobId); $this->assertNotEquals($job->status, Job::STATUS_ERROR); return $job; }
public function testMultiLanguageJob() { $inputConfig = new HttpInputConfig(); $inputConfig->url = self::URL_FILE; $inputConfig->skipAnalysis = true; $input = Input::create($inputConfig); $audioMetaDataJustSound = new AudioMetaData(); $audioMetaDataJustSound->defaultStreamId = 0; $audioMetaDataJustSound->label = 'Just Sound'; $audioMetaDataJustSound->language = 'de'; $audioMetaDataSoundAndVoice = new AudioMetaData(); $audioMetaDataSoundAndVoice->defaultStreamId = 1; $audioMetaDataSoundAndVoice->label = 'Sound and Voice'; $audioMetaDataSoundAndVoice->language = 'en'; /* CREATE VIDEO STREAM CONFIG */ $videoStreamConfig = new VideoStreamConfig(); $videoStreamConfig->bitrate = 2400000; $videoStreamConfig->height = 720; $videoStreamConfig->width = 1280; /* CREATE AUDIO STREAM CONFIGS */ $audioStreamConfig = new AudioStreamConfig(); $audioStreamConfig->bitrate = 256000; $encodingProfileConfig = new EncodingProfileConfig(); $encodingProfileConfig->name = 'SkippedAnalysisProfile'; $encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig; $encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig; /* CREATE ENCODING PROFILE */ $encodingProfile = EncodingProfile::create($encodingProfileConfig); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->speed = JobSpeedTypes::STANDARD; $jobConfig->audioMetaData[] = $audioMetaDataJustSound; $jobConfig->audioMetaData[] = $audioMetaDataSoundAndVoice; /* CREATE JOB */ $job = Job::create($jobConfig); $this->assertInstanceOf('bitcodin\\Job', $job); $this->assertNotNull($job->jobId); $this->assertNotEquals($job->status, Job::STATUS_ERROR); return $job; }
$inputHeight = $inputVideoMediaConfiguration->displayAspectRatioDen; $aspectRatio = $inputWidth / $inputHeight; // Predefined widths $widths = array(426, 640, 854, 1280, 1920); $bitrates = array(400 * 1000, 800 * 1000, 1200 * 1000, 2400 * 1000, 4800 * 1000); $heights = array(); foreach ($widths as $width) { array_push($heights, getHeight($width, $aspectRatio)); } $videoStreamConfigurations = array(); for ($i = 0; $i < count($widths); $i++) { $videoStreamConfiguration = new VideoStreamConfig(); $videoStreamConfiguration->width = $widths[$i]; $videoStreamConfiguration->height = $heights[$i]; $videoStreamConfiguration->bitrate = $bitrates[$i]; array_push($videoStreamConfigurations, $videoStreamConfiguration); } $audioStreamConfig = new AudioStreamConfig(); $audioStreamConfig->bitrate = 128000; $encodingProfileConfig = new EncodingProfileConfig(); $encodingProfileConfig->name = 'API TEST PROFILE DELETE'; $encodingProfileConfig->videoStreamConfigs = $videoStreamConfigurations; $encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig; $encodingProfile = EncodingProfile::create($encodingProfileConfig); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $job = Job::create($jobConfig); EncodingProfile::delete($encodingProfile->encodingProfileId);
<div class="ui labeled input" style="padding-bottom: 2px;width: 100%"> <a class="ui label" style="width: 135px">Api Key</a> <input type="text" name="apiKey" required="true" placeholder="API Key" <?php if (isset($_GET['apiKey'])) { echo "value='" . $_GET['apiKey'] . "'"; } ?> > </div> <button class="ui button" style="width: 100%">Set API Key</button> </form> <?php if (isset($_GET['apiKey'])) { Bitcodin::setApiToken($_GET['apiKey']); $jobs = Job::getList(); ?> <table id='data' class="ui right aligned celled table"> <thead> <tr> <th>Thumbnail</th> <th>Encoding ID</th> <th>Input ID</th> <th>Calculate Quality</th> </tr> </thead> <tbody> <?php foreach ($jobs->jobs as $job) { if ($job->status == "Finished") { ?>
public function testMultiLanguageJobWithMissingAudioMetaDataFields() { $inputConfig = new HttpInputConfig(); $inputConfig->url = self::URL_FILE; $input = Input::create($inputConfig); $encodingProfile = $this->getMultiLanguageEncodingProfile(); $audioMetaDataJustSound = new AudioMetaData(); $audioMetaDataJustSound->defaultStreamId = 0; $audioMetaDataJustSound->label = 'Just Sound'; $audioMetaDataSoundAndVoice = new AudioMetaData(); $audioMetaDataSoundAndVoice->defaultStreamId = 1; $audioMetaDataSoundAndVoice->language = 'en'; $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $jobConfig->speed = JobSpeedTypes::STANDARD; $jobConfig->audioMetaData[] = $audioMetaDataJustSound; $jobConfig->audioMetaData[] = $audioMetaDataSoundAndVoice; $this->setExpectedException('bitcodin\\exceptions\\BitcodinException'); $job = Job::create($jobConfig); return $job; }
public function testMergeChannelsMultiAudioStreamJob() { $inputConfig = new HttpInputConfig(); $inputConfig->url = 'http://bitbucketireland.s3.amazonaws.com/at_test/mono_streams.mkv'; $input = Input::create($inputConfig); /* CREATE VIDEO STREAM CONFIG */ $videoStreamConfig = new VideoStreamConfig(); $videoStreamConfig->bitrate = 512000; $videoStreamConfig->height = 202; $videoStreamConfig->width = 480; /* CREATE AUDIO STREAM CONFIGS */ $audioStreamConfig1 = new AudioStreamConfig(); $audioStreamConfig1->bitrate = 256000; $audioStreamConfig1->defaultStreamId = 0; $audioStreamConfig2 = new AudioStreamConfig(); $audioStreamConfig2->bitrate = 128000; $audioStreamConfig2->defaultStreamId = 1; $encodingProfileConfig = new EncodingProfileConfig(); $encodingProfileConfig->name = 'Multi Audio Stream Profile'; $encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig; $encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig1; $encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig2; /* CREATE ENCODING PROFILE */ $encodingProfile = EncodingProfile::create($encodingProfileConfig); $audioMetaData12 = new AudioMetaData(); $audioMetaData12->defaultStreamId = 0; $audioMetaData12->label = 'Channel 1 and 2'; $audioMetaData12->language = 'en'; $audioMetaData34 = new AudioMetaData(); $audioMetaData34->defaultStreamId = 1; $audioMetaData34->label = 'Channel 3 and 4'; $audioMetaData34->language = 'en'; $mergeAudioChannelConfig12 = new MergeAudioChannelConfig(); $mergeAudioChannelConfig12->audioChannels = array(1, 2); $mergeAudioChannelConfig34 = new MergeAudioChannelConfig(); $mergeAudioChannelConfig34->audioChannels = array(3, 4); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $jobConfig->speed = JobSpeedTypes::STANDARD; $jobConfig->audioMetaData[] = $audioMetaData12; $jobConfig->audioMetaData[] = $audioMetaData34; $jobConfig->mergeAudioChannelConfigs[] = $mergeAudioChannelConfig12; $jobConfig->mergeAudioChannelConfigs[] = $mergeAudioChannelConfig34; /* CREATE JOB */ $job = Job::create($jobConfig); $this->assertInstanceOf('bitcodin\\Job', $job); $this->assertNotNull($job->jobId); $this->assertNotEquals($job->status, Job::STATUS_ERROR); return $job; }
public function testListAllJobs() { $this->markTestSkipped("needs to be refactored"); /* GET LIST OF JOBS */ foreach (Job::getListAll() as $job) { $this->assertNotNull($job->jobId); $this->assertTrue(in_array($job->status, [Job::STATUS_FINISHED, Job::STATUS_ENQUEUED, Job::STATUS_IN_PROGRESS, Job::STATUS_ERROR]), "Invalid job status: " . $job->status); } }
private function waitTillJobGetsExpectedStatus(Job $job, $expectedStatus, $notExpectedStatus, $timeOutSeconds = 1000) { $expireTime = (new DateTime())->add(new \DateInterval('PT' . $timeOutSeconds . 'S')); do { sleep(2); $job->update(); $this->assertNotEquals($job->status, $notExpectedStatus); $this->assertTrue($expireTime >= new DateTime(), 'Timeout during job update!'); } while ($job->status != $expectedStatus); }
public function testVideoOnlyJob() { $inputConfig = new HttpInputConfig(); $inputConfig->url = self::URL_FILE; $input = Input::create($inputConfig); /* CREATE VIDEO STREAM CONFIG */ $videoStreamConfig = new VideoStreamConfig(); $videoStreamConfig->bitrate = 1024000; $videoStreamConfig->height = 202; $videoStreamConfig->width = 480; $encodingProfileConfig = new EncodingProfileConfig(); $encodingProfileConfig->name = 'TestEncodingProfile_' . $this->getName() . '@JobMultiLanguageTest'; $encodingProfileConfig->videoStreamConfigs[] = $videoStreamConfig; /* CREATE ENCODING PROFILE */ $encodingProfile = EncodingProfile::create($encodingProfileConfig); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->speed = JobSpeedTypes::STANDARD; /* CREATE JOB */ $job = Job::create($jobConfig); $this->assertInstanceOf('bitcodin\\Job', $job); $this->assertNotNull($job->jobId); $this->assertNotEquals($job->status, Job::STATUS_ERROR); return $job; }
$encodingProfileConfig->audioStreamConfigs[] = $audioStreamConfig; /* CREATE ENCODING PROFILE */ $encodingProfile = EncodingProfile::create($encodingProfileConfig); $jobConfig = new JobConfig(); $jobConfig->encodingProfile = $encodingProfile; $jobConfig->input = $input; $jobConfig->manifestTypes[] = ManifestTypes::M3U8; $jobConfig->manifestTypes[] = ManifestTypes::MPD; $jobConfig->speed = JobSpeedTypes::STANDARD; /* 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); $manifestInfo = Job::getManifestInfo($job->jobId); var_dump($manifestInfo); $outputConfig = new FtpOutputConfig(); $outputConfig->name = "TestS3Output"; $outputConfig->host = str_replace('ftp://', '', getKey('ftpServer')); $outputConfig->username = getKey('ftpUser'); $outputConfig->password = getKey('ftpPassword'); $output = Output::create($outputConfig); /* TRANSFER JOB OUTPUT */ $job->transfer($output); /* HELPER FUNCTION */ function getKey($key) { return json_decode(file_get_contents(__DIR__ . '/../test/config.json'))->{$key}; }