public static function simulateFlavor($fmt, $vcodec, $w = 0, $h, $br, $acodec = "", $ab = 96, $ar = 22050, $clipStart = 0, $clipDur = 0, $engines = "2,3,99,(6#2#7)") { $fl = new KDLFlavor(); $fl->_audio = new KDLAudioData(); $fl->_video = new KDLVideoData(); $fl->_container = new KDLContainerData(); $fl->_clipDur = $clipDur; $fl->_clipStart = $clipStart; // $fl = $source; $fl->_container->_id = $fmt; $fl->_video->_id = $vcodec; $fl->_video->_bitRate = $br; $fl->_video->_width = $w; $fl->_video->_height = $h; $fl->_video->_gop = 0; // $fl->_video->_frameRate = 0; // $fl->_flags = KDLFlavor::ForceCommandLineFlagBit; $fl->_audio->_id = $acodec; // $fl->_audio->_channels = 2; $fl->_audio->_sampleRate = $ar; $fl->_audio->_bitRate = $ab; // $fl->_audio->_resolution=16; /// $fl->_transcoders[] = new KDLOperationParams("cli_encode"); $fl->_transcoders = KDLUtils::parseTranscoderList($engines, "", KDLWrap::$TranscodersCdl2Kdl); /* $fl->_transcoders[] = new KDLOperationParams("encoding.com"); $fl->_transcoders[] = new KDLOperationParams("ffmpeg"); $fl->_transcoders[] = new KDLOperationParams("ffmpeg-aux"); $fl->_transcoders[] = new KDLOperationParams("mencoder"); //$fl->_transcoders["encoding.com"] = true; //$fl->_transcoders["cli_encode"] = true; */ KDLUtils::RecursiveScan($fl->_transcoders, "transcoderSetFuncTest", null, null); //KalturaLog::log(__METHOD__."==>\n".print_r($fl->_transcoders,true)); return $fl; }
public static function ConvertFlavorCdl2Kdl($cdlFlavor) { $kdlFlavor = new KDLFlavor(); $kdlFlavor->_name = $cdlFlavor->getName(); $kdlFlavor->_id = $cdlFlavor->getId(); $kdlFlavor->_type = $cdlFlavor->getType(); $kdlFlavor->_tags = $cdlFlavor->getTags(); if ($cdlFlavor instanceof flavorParams || $cdlFlavor instanceof flavorParamsOutput) { $kdlFlavor->_clipStart = $cdlFlavor->getClipOffset(); $kdlFlavor->_clipDur = $cdlFlavor->getClipDuration(); } $kdlFlavor->_cdlObject = $cdlFlavor; $kdlFlavor->_container = new KDLContainerData(); $kdlFlavor->_container->_id = $cdlFlavor->getFormat(); // $kdlFlavor->_container->_duration=$api->getContainerDuration(); // $kdlFlavor->_container->_bitRate=$api->getContainerBitRate(); // $kdlFlavor->_container->_fileSize=$api->getFileSize(); if ($kdlFlavor->_container->IsDataSet() == false) { $kdlFlavor->_container = null; } $kdlFlavor->_video = new KDLVideoData(); $kdlFlavor->_video->_id = $cdlFlavor->getVideoCodec(); // $kdlFlavor->_video->_format = $api->getVideoFormat(); // $kdlFlavor->_video->_duration = $api->getVideoDuration(); $kdlFlavor->_video->_bitRate = $cdlFlavor->getVideoBitRate(); $kdlFlavor->_video->_width = $cdlFlavor->getWidth(); $kdlFlavor->_video->_height = $cdlFlavor->getHeight(); $kdlFlavor->_video->_frameRate = $cdlFlavor->getFrameRate(); $kdlFlavor->_video->_gop = $cdlFlavor->getGopSize(); $kdlFlavor->_isTwoPass = $cdlFlavor->getTwoPass(); $kdlFlavor->_video->_arProcessingMode = $cdlFlavor->getAspectRatioProcessingMode(); $kdlFlavor->_video->_forceMult16 = $cdlFlavor->getForceFrameToMultiplication16(); if ($cdlFlavor instanceof flavorParams) { $kdlFlavor->_video->_cbr = $cdlFlavor->getVideoConstantBitrate(); $kdlFlavor->_video->_bt = $cdlFlavor->getVideoBitrateTolerance(); $kdlFlavor->_video->_isGopInSec = $cdlFlavor->getIsGopInSec(); $kdlFlavor->_video->_isShrinkFramesizeToSource = !$cdlFlavor->getIsAvoidVideoShrinkFramesizeToSource(); $kdlFlavor->_video->_isShrinkBitrateToSource = !$cdlFlavor->getIsAvoidVideoShrinkBitrateToSource(); $kdlFlavor->_video->_isFrameRateForLowBrAppleHls = $cdlFlavor->getIsVideoFrameRateForLowBrAppleHls(); } // $flavor->_video->_dar = $api->getVideoDar(); if ($kdlFlavor->_video->IsDataSet() == false) { $kdlFlavor->_video = null; } $kdlFlavor->_audio = new KDLAudioData(); $kdlFlavor->_audio->_id = $cdlFlavor->getAudioCodec(); // $flavor->_audio->_format = $cdlFlavor->getAudioFormat(); // $flavor->_audio->_duration = $cdlFlavor->getAudioDuration(); $kdlFlavor->_audio->_bitRate = $cdlFlavor->getAudioBitRate(); $kdlFlavor->_audio->_channels = $cdlFlavor->getAudioChannels(); $kdlFlavor->_audio->_sampleRate = $cdlFlavor->getAudioSampleRate(); $kdlFlavor->_audio->_resolution = $cdlFlavor->getAudioResolution(); if ($kdlFlavor->_audio->IsDataSet() == false) { $kdlFlavor->_audio = null; } $operators = $cdlFlavor->getOperators(); $transObjArr = array(); //KalturaLog::log(__METHOD__."\nCDL Flavor==>\n".print_r($cdlFlavor,true)); if (!empty($operators) || $cdlFlavor->getEngineVersion() == 1) { $transObjArr = KDLWrap::convertOperatorsCdl2Kdl($operators); $kdlFlavor->_engineVersion = 1; } else { $kdlFlavor->_engineVersion = 0; $trnsStr = $cdlFlavor->getConversionEngines(); $extraStr = $cdlFlavor->getConversionEnginesExtraParams(); $transObjArr = KDLUtils::parseTranscoderList($trnsStr, $extraStr); if ($cdlFlavor instanceof flavorParamsOutputWrap || $cdlFlavor instanceof flavorParamsOutput) { $cmdLines = $cdlFlavor->getCommandLines(); foreach ($transObjArr as $transObj) { $transObj->_cmd = $cmdLines[$transObj->_id]; } } KalturaLog::log("\ntranscoders==>\n" . print_r($transObjArr, true)); } KDLUtils::RecursiveScan($transObjArr, "transcoderSetFuncWrap", self::$TranscodersCdl2Kdl, ""); $kdlFlavor->_transcoders = $transObjArr; if ($cdlFlavor instanceof flavorParamsOutputWrap) { if ($cdlFlavor->_isRedundant) { $kdlFlavor->_flags = $kdlFlavor->_flags | KDLFlavor::RedundantFlagBit; } if ($cdlFlavor->_isNonComply) { $kdlFlavor->_flags = $kdlFlavor->_flags | KDLFlavor::BitrateNonComplyFlagBit; } $kdlFlavor->_errors = $kdlFlavor->_errors + $cdlFlavor->_errors; $kdlFlavor->_warnings = $kdlFlavor->_warnings + $cdlFlavor->_warnings; } if ($cdlFlavor instanceof SwfFlavorParams || $cdlFlavor instanceof SwfFlavorParamsOutput) { $kdlFlavor->_swf = new KDLSWFData(); $kdlFlavor->_swf->_flashVersion = $cdlFlavor->getFlashVersion(); $kdlFlavor->_swf->_zoom = $cdlFlavor->getZoom(); $kdlFlavor->_swf->_zlib = $cdlFlavor->getZlib(); $kdlFlavor->_swf->_jpegQuality = $cdlFlavor->getJpegQuality(); $kdlFlavor->_swf->_sameWindow = $cdlFlavor->getSameWindow(); $kdlFlavor->_swf->_insertStop = $cdlFlavor->getInsertStop(); $kdlFlavor->_swf->_useShapes = $cdlFlavor->getUseShapes(); $kdlFlavor->_swf->_storeFonts = $cdlFlavor->getStoreFonts(); $kdlFlavor->_swf->_flatten = $cdlFlavor->getFlatten(); } if ($cdlFlavor instanceof PdfFlavorParams || $cdlFlavor instanceof PdfFlavorParamsOutput) { $kdlFlavor->_pdf = new KDLPDFData(); $kdlFlavor->_pdf->_resolution = $cdlFlavor->getResolution(); $kdlFlavor->_pdf->_paperHeight = $cdlFlavor->getPaperHeight(); $kdlFlavor->_pdf->_paperWidth = $cdlFlavor->getPaperWidth(); $kdlFlavor->_pdf->_readonly = $cdlFlavor->getReadonly(); } if ($cdlFlavor instanceof ImageFlavorParams || $cdlFlavor instanceof ImageFlavorParamsOutput) { $kdlFlavor->_image = new KDLImageData(); $kdlFlavor->_image->_densityWidth = $cdlFlavor->getDensityWidth(); $kdlFlavor->_image->_densityHeight = $cdlFlavor->getDensityHeight(); $kdlFlavor->_image->_sizeWidth = $cdlFlavor->getSizeWidth(); $kdlFlavor->_image->_sizeHeight = $cdlFlavor->getSizeHeight(); $kdlFlavor->_image->_depth = $cdlFlavor->getDepth(); $kdlFlavor->_image->_format = $cdlFlavor->getFormat(); } //KalturaLog::log(__METHOD__."\nKDL Flavor==>\n".print_r($kdlFlavor,true)); return $kdlFlavor; }
public static function ConvertFlavorCdl2Kdl($cdlFlavor) { $kdlFlavor = new KDLFlavor(); $kdlFlavor->_name = $cdlFlavor->getName(); $kdlFlavor->_id = $cdlFlavor->getId(); $kdlFlavor->_type = $cdlFlavor->getType(); $kdlFlavor->_tags = $cdlFlavor->getTags(); if ($cdlFlavor instanceof flavorParams) { $kdlFlavor->_clipStart = $cdlFlavor->getClipOffset(); $kdlFlavor->_clipDur = $cdlFlavor->getClipDuration(); /**/ $multiStream = $cdlFlavor->getMultiStream(); if (isset($multiStream)) { //Sample json string: {"detect":"auto","audio":{"mapping":[1,2]}} $fromJson = json_decode($multiStream); $kdlFlavor->_multiStream = isset($fromJson) ? $fromJson : null; } $kdlFlavor->_optimizationPolicy = $cdlFlavor->getOptimizationPolicy(); } else { if ($cdlFlavor instanceof flavorParamsOutput) { $kdlFlavor->_clipStart = $cdlFlavor->getClipOffset(); $kdlFlavor->_clipDur = $cdlFlavor->getClipDuration(); } } $kdlFlavor->_cdlObject = $cdlFlavor; $kdlFlavor->_container = new KDLContainerData(); $kdlFlavor->_container->_id = $cdlFlavor->getFormat(); // $kdlFlavor->_container->_duration=$api->getContainerDuration(); // $kdlFlavor->_container->_bitRate=$api->getContainerBitRate(); // $kdlFlavor->_container->_fileSize=$api->getFileSize(); if ($kdlFlavor->_container->IsDataSet() == false) { $kdlFlavor->_container = null; } $kdlFlavor->_video = new KDLVideoData(); $kdlFlavor->_video->_id = $cdlFlavor->getVideoCodec(); // $kdlFlavor->_video->_format = $api->getVideoFormat(); // $kdlFlavor->_video->_duration = $api->getVideoDuration(); $kdlFlavor->_video->_bitRate = $cdlFlavor->getVideoBitRate(); $kdlFlavor->_video->_width = $cdlFlavor->getWidth(); $kdlFlavor->_video->_height = $cdlFlavor->getHeight(); $kdlFlavor->_video->_frameRate = $cdlFlavor->getFrameRate(); $kdlFlavor->_video->_gop = $cdlFlavor->getGopSize(); $kdlFlavor->_isTwoPass = $cdlFlavor->getTwoPass(); $kdlFlavor->_video->_arProcessingMode = $cdlFlavor->getAspectRatioProcessingMode(); $kdlFlavor->_video->_forceMult16 = $cdlFlavor->getForceFrameToMultiplication16(); if ($cdlFlavor instanceof flavorParams) { $kdlFlavor->_video->_cbr = $cdlFlavor->getVideoConstantBitrate(); $kdlFlavor->_video->_bt = $cdlFlavor->getVideoBitrateTolerance(); $kdlFlavor->_video->_isGopInSec = $cdlFlavor->getIsGopInSec(); $kdlFlavor->_video->_isShrinkFramesizeToSource = !$cdlFlavor->getIsAvoidVideoShrinkFramesizeToSource(); $kdlFlavor->_video->_isShrinkBitrateToSource = !$cdlFlavor->getIsAvoidVideoShrinkBitrateToSource(); $kdlFlavor->_video->_isFrameRateForLowBrAppleHls = $cdlFlavor->getIsVideoFrameRateForLowBrAppleHls(); $kdlFlavor->_video->_anamorphic = $cdlFlavor->getAnamorphicPixels(); $kdlFlavor->_video->_maxFrameRate = $cdlFlavor->getMaxFrameRate(); $kdlFlavor->_video->_isForcedKeyFrames = !$cdlFlavor->getIsAvoidForcedKeyFrames(); $kdlFlavor->_video->_isCropIMX = $cdlFlavor->getIsCropIMX(); $watermarkData = $cdlFlavor->getWatermarkData(); if (isset($watermarkData)) { $fromJson = json_decode($watermarkData); $kdlFlavor->_video->_watermarkData = isset($fromJson) ? $fromJson : null; } } // $flavor->_video->_dar = $api->getVideoDar(); if ($kdlFlavor->_video->IsDataSet() == false) { $kdlFlavor->_video = null; } $kdlFlavor->_audio = new KDLAudioData(); $kdlFlavor->_audio->_id = $cdlFlavor->getAudioCodec(); // $flavor->_audio->_format = $cdlFlavor->getAudioFormat(); // $flavor->_audio->_duration = $cdlFlavor->getAudioDuration(); $kdlFlavor->_audio->_bitRate = $cdlFlavor->getAudioBitRate(); $kdlFlavor->_audio->_channels = $cdlFlavor->getAudioChannels(); $kdlFlavor->_audio->_sampleRate = $cdlFlavor->getAudioSampleRate(); $kdlFlavor->_audio->_resolution = $cdlFlavor->getAudioResolution(); if ($kdlFlavor->_audio->IsDataSet() == false) { $kdlFlavor->_audio = null; } $operators = $cdlFlavor->getOperators(); $transObjArr = array(); //KalturaLog::log(__METHOD__."\nCDL Flavor==>\n".print_r($cdlFlavor,true)); if (!empty($operators) || $cdlFlavor->getEngineVersion() == 1) { $transObjArr = KDLWrap::convertOperatorsCdl2Kdl($operators); $kdlFlavor->_engineVersion = 1; } else { $kdlFlavor->_engineVersion = 0; $trnsStr = $cdlFlavor->getConversionEngines(); $extraStr = $cdlFlavor->getConversionEnginesExtraParams(); $transObjArr = KDLUtils::parseTranscoderList($trnsStr, $extraStr); if ($cdlFlavor instanceof flavorParamsOutputWrap || $cdlFlavor instanceof flavorParamsOutput) { $cmdLines = $cdlFlavor->getCommandLines(); foreach ($transObjArr as $transObj) { $transObj->_cmd = $cmdLines[$transObj->_id]; } } KalturaLog::log("\ntranscoders==>\n" . print_r($transObjArr, true)); } KDLUtils::RecursiveScan($transObjArr, "transcoderSetFuncWrap", self::$TranscodersCdl2Kdl, ""); $kdlFlavor->_transcoders = $transObjArr; if ($cdlFlavor instanceof flavorParamsOutputWrap) { if ($cdlFlavor->_isRedundant) { $kdlFlavor->_flags = $kdlFlavor->_flags | KDLFlavor::RedundantFlagBit; } if ($cdlFlavor->_isNonComply) { $kdlFlavor->_flags = $kdlFlavor->_flags | KDLFlavor::BitrateNonComplyFlagBit; } $kdlFlavor->_errors = $kdlFlavor->_errors + $cdlFlavor->_errors; $kdlFlavor->_warnings = $kdlFlavor->_warnings + $cdlFlavor->_warnings; } if ($cdlFlavor instanceof SwfFlavorParams || $cdlFlavor instanceof SwfFlavorParamsOutput) { $kdlFlavor->_swf = new KDLSwfData(); $kdlFlavor->_swf->_flashVersion = $cdlFlavor->getFlashVersion(); $kdlFlavor->_swf->_zoom = $cdlFlavor->getZoom(); $kdlFlavor->_swf->_zlib = $cdlFlavor->getZlib(); $kdlFlavor->_swf->_jpegQuality = $cdlFlavor->getJpegQuality(); $kdlFlavor->_swf->_sameWindow = $cdlFlavor->getSameWindow(); $kdlFlavor->_swf->_insertStop = $cdlFlavor->getInsertStop(); $kdlFlavor->_swf->_useShapes = $cdlFlavor->getUseShapes(); $kdlFlavor->_swf->_storeFonts = $cdlFlavor->getStoreFonts(); $kdlFlavor->_swf->_flatten = $cdlFlavor->getFlatten(); $kdlFlavor->_swf->_poly2Bitmap = $cdlFlavor->getPoly2bitmap(); } if ($cdlFlavor instanceof PdfFlavorParams || $cdlFlavor instanceof PdfFlavorParamsOutput) { $kdlFlavor->_pdf = new KDLPdfData(); $kdlFlavor->_pdf->_resolution = $cdlFlavor->getResolution(); $kdlFlavor->_pdf->_paperHeight = $cdlFlavor->getPaperHeight(); $kdlFlavor->_pdf->_paperWidth = $cdlFlavor->getPaperWidth(); $kdlFlavor->_pdf->_readonly = $cdlFlavor->getReadonly(); } if ($cdlFlavor instanceof ImageFlavorParams || $cdlFlavor instanceof ImageFlavorParamsOutput) { $kdlFlavor->_image = new KDLImageData(); $kdlFlavor->_image->_densityWidth = $cdlFlavor->getDensityWidth(); $kdlFlavor->_image->_densityHeight = $cdlFlavor->getDensityHeight(); $kdlFlavor->_image->_sizeWidth = $cdlFlavor->getSizeWidth(); $kdlFlavor->_image->_sizeHeight = $cdlFlavor->getSizeHeight(); $kdlFlavor->_image->_depth = $cdlFlavor->getDepth(); $kdlFlavor->_image->_format = $cdlFlavor->getFormat(); } //KalturaLog::log(__METHOD__."\nKDL Flavor==>\n".print_r($kdlFlavor,true)); if (is_null($kdlFlavor->_container)) { KalturaLog::log("No Container Found On Flavor Convert Will Fail"); $kdlFlavor->_errors[KDLConstants::ContainerIndex][] = KDLErrors::ToString(KDLErrors::InvalidFlavorParamConfiguration); } return $kdlFlavor; }