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);
 }
Example #2
0
 /**
  * @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;
 }
Example #8
0
 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};
}