Codification of video
setCloudRegion(CloudRegion::GOOGLE_EUROPE_WEST_1);
$encoding = $apiClient->encodings()->create($Encoding);
//create array with input separator /
$arinput=explode('/',$inputName);
//name of domain
$name_domain=$arinput[0];
//length of array
$count=sizeof($arinput);
//name of input file
$inputfile=$arinput[$count-1];
//remove the last parameter of array
unset($arinput[$count-1]);
//remove the first parameter of array
array_splice($arinput, 0, 1);
$inputpath=implode('/', $arinput);
# INPUT
$videoInputPath = '/'.$inputpath.'/'.$inputfile;
$httpsInputToCreate = new HttpsInput($name_domain);
$httpsInputToCreate->setName("INPUT");
$input = $apiClient->inputs()->https()->create($httpsInputToCreate);
# OUTPUT
$GCSOutputBucketName = $configfile['output']['BucketName'];
$GCSOutputAccessKey = $configfile['output']['AccessKey'];
$GCSOutputSecretKey = $configfile['output']['SecretKey'];
$GCSOutputToCreate = new GcsOutput($GCSOutputBucketName,
$GCSOutputAccessKey, $GCSOutputSecretKey);
$GCSOutputToCreate->setName("Multicodec h265, h264, dash");
$output = $apiClient->outputs()->gcs()->create($GCSOutputToCreate);
$outputPath = "/asset/".$outputName."/";
//keys drm
$cencDrmKey = $configfile['drm']['DrmKey'];
$cencDrmKid = $configfile['drm']['DrmKid'];
$widevinePssh = $configfile['drm']['widevinePssh'];
$playreadyLaUrl = $configfile['drm']['playreadyLaUrl'];
//CREATE INPUT STREAM FOR VIDEO AND AUDIO
$inputStreamVideo = new InputStream($input, $videoInputPath,
SelectionMode::AUTO); //Automatically selects first available video track
$inputStreamVideo->setPosition(0);
$inputStreamAudio = new InputStream($input, $videoInputPath,
SelectionMode::AUTO); //Automatically selects first available audio track
$inputStreamAudio->setPosition(1);
// CREATE VIDEO CODEC h264 CONFIGURATIONS
$codecConfigVideo1080p =
createH264VideoCodecConfiguration($apiClient,'Streamh-p',
H264Profile::HIGH,-, null, 1080);
$codecConfigVideo720p =
createH264VideoCodecConfiguration($apiClient,'Streamh264720p',
H264Profile::HIGH,-, null, 720);
$codecConfigVideo480p =
createH264VideoCodecConfiguration($apiClient,'Streamh264480p',
H264Profile::MAIN,-, null, 480);
$codecConfigVideo360p =
createH264VideoCodecConfiguration($apiClient,'Streamh264360p',
H264Profile::MAIN, 800000, null, 360);
// CREATE VIDEO CODEC h265 CONFIGURATIONS
$h265codecConfigVideo1080p =
createH265VideoCodecConfiguration($apiClient,'Streamh-p',-,
null, 1080);
$h265codecConfigVideo720p =
createH265VideoCodecConfiguration($apiClient,'Streamh265720p',-,
null, 720);
// CREATE AUDIO CODEC CONFIGURATIONS
$codecConfigAudio128 = createAACAudioCodecConfiguration($apiClient, 'AAC
128Kbps 48KHz', 128000, 48000);
// CREATE VIDEO STREAMS FMP4
$fmp4VideoEncodingStream1080p = CreateSreamsFmp4($apiClient,$encoding,
$codecConfigVideo1080p, $inputStreamVideo);
$fmp4VideoEncodingStream720p = CreateSreamsFmp4($apiClient,$encoding,
$codecConfigVideo720p, $inputStreamVideo);
$fmp4VideoEncodingStream480p = CreateSreamsFmp4($apiClient,$encoding,
$codecConfigVideo480p, $inputStreamVideo);
$fmp4VideoEncodingStream360p = CreateSreamsFmp4($apiClient,$encoding,
$codecConfigVideo360p, $inputStreamVideo);
// CREATE VIDEO STREAMS h265
$h265VideoEncodingStream1080p = CreateSreamsFmp4($apiClient,$encoding,
$h265codecConfigVideo1080p, $inputStreamVideo);
$h265VideoEncodingStream720p = CreateSreamsFmp4($apiClient,$encoding,
$h265codecConfigVideo720p, $inputStreamVideo);
// CREATE AUDIO STREAMS
$audioStream = new Stream($codecConfigAudio128,
array($inputStreamAudio));
$audioEncodingStream128 = $apiClient->encodings()->streams($encoding)>create($audioStream);
// CREATE ENCODING OUTPUTS FMP4
$fmp4EncodingOutput1080p = createEncodingOutput($output, $outputPath .
'video/1080p/dash/');
$fmp4EncodingOutput720p = createEncodingOutput($output, $outputPath .
'video/720p/dash/');
$fmp4EncodingOutput480p = createEncodingOutput($output, $outputPath .
'video/480p/dash/');
$fmp4EncodingOutput360p = createEncodingOutput($output, $outputPath .
'video/360p/dash/');
// CREATE VIDEO MUXINGS (FMP4)
$fmp4EncodingMuxing1080p = createFmp4Muxing($apiClient,
$encoding,$fmp4VideoEncodingStream1080p, $fmp4EncodingOutput1080p);
$fmp4EncodingMuxing720p = createFmp4Muxing($apiClient,
$encoding,$fmp4VideoEncodingStream720p, $fmp4EncodingOutput720p);
$fmp4EncodingMuxing480p = createFmp4Muxing($apiClient,
$encoding,$fmp4VideoEncodingStream480p, $fmp4EncodingOutput480p);
$fmp4EncodingMuxing360p = createFmp4Muxing($apiClient,
$encoding,$fmp4VideoEncodingStream360p, $fmp4EncodingOutput360p);
// CREATE AUDIO ENCODING OUTPUT(FMP4)
$audioEncodingOutput128 = createEncodingOutput($output, $outputPath .
'audio/128kbps/dash/');
// CREATE AUDIO MUXING (FMP4)
$fmp4EncodingAudioMuxing128 = createFmp4Muxing($apiClient,
$encoding,$audioEncodingStream128, $audioEncodingOutput128);
// CREATE ENCODING OUTPUTS h265
$h265EncodingOutput1080p = createEncodingOutput($output, $outputPath .
'video/1080p/webm/');
$h265EncodingOutput720p = createEncodingOutput($output, $outputPath .
'video/720p/webm/');
// CREATE VIDEO MUXINGS h265 (FMP4)
$h265fmp4EncodingMuxing1080p = createFmp4Muxing($apiClient,
$encoding,$h265VideoEncodingStream1080p, $h265EncodingOutput1080p);
$h265fmp4EncodingMuxing720p = createFmp4Muxing($apiClient,
$encoding,$h265VideoEncodingStream720p, $h265EncodingOutput720p);
//if DRM
if($drm){
// ADD DRM TO VIDEO FMP4 MUXINGs h264
$cencDrmEncodingOutput1080p = createEncodingOutput($output,
$outputPath . 'video/1080p/dash/drm/');
$cencDrmEncodingOutput720p = createEncodingOutput($output,
$outputPath . 'video/720p/dash/drm/');
$cencDrmEncodingOutput480p = createEncodingOutput($output,
$outputPath . 'video/480p/dash/drm/');
$cencDrmEncodingOutput360p = createEncodingOutput($output,
$outputPath . 'video/360p/dash/drm/');
$videoFmp4Drm1080p = createCencDrm($apiClient, $encoding,
$fmp4EncodingMuxing1080p, $cencDrmKey, $cencDrmKid,
array($cencDrmEncodingOutput1080p), $widevinePssh);
$videoFmp4Drm720p = createCencDrm($apiClient, $encoding,
$fmp4EncodingMuxing720p, $cencDrmKey, $cencDrmKid,
array($cencDrmEncodingOutput720p), $widevinePssh);
$videoFmp4Drm480p = createCencDrm($apiClient, $encoding,
$fmp4EncodingMuxing480p, $cencDrmKey, $cencDrmKid,
array($cencDrmEncodingOutput480p), $widevinePssh);
$videoFmp4Drm360p = createCencDrm($apiClient, $encoding,
$fmp4EncodingMuxing360p, $cencDrmKey, $cencDrmKid,
array($cencDrmEncodingOutput360p), $widevinePssh);
// CREATE DRM TO AUDIO FMP4 MUXINGs
$audioCencDrmEncodingOutput128 = createEncodingOutput($output,
$outputPath . 'audio/128kbps/dash/drm/');
$audioFmp4Drm128 = createCencDrm($apiClient, $encoding,
$fmp4EncodingAudioMuxing128, $cencDrmKey, $cencDrmKid,
array($audioCencDrmEncodingOutput128), $widevinePssh, $playreadyLaUrl);
$h265cencDrmEncodingOutput1080p = createEncodingOutput($output,
$outputPath . 'video/1080p/webm/drm/');
$h265cencDrmEncodingOutput720p = createEncodingOutput($output,
$outputPath . 'video/720p/webm/drm/');
$h265videoFmp4Drm1080p = createCencDrm($apiClient, $encoding,
$h265fmp4EncodingMuxing1080p, $cencDrmKey, $cencDrmKid,
array($h265cencDrmEncodingOutput1080p), $widevinePssh);
$h265videoFmp4Drm720p = createCencDrm($apiClient, $encoding,
$h265fmp4EncodingMuxing720p, $cencDrmKey, $cencDrmKid,
array($h265cencDrmEncodingOutput720p), $widevinePssh);
}
//end add DRM*/
$apiClient->encodings()->start($encoding);