private function generateTargetFlavors(mediaInfo $cdlMediaInfo = null, $cdlFlavorList)
 {
     $mediaSet = new KDLMediaDataSet();
     if ($cdlMediaInfo != null) {
         self::ConvertMediainfoCdl2Mediadataset($cdlMediaInfo, $mediaSet);
     }
     KalturaLog::log("...S-->" . $mediaSet->ToString());
     $profile = new KDLProfile();
     foreach ($cdlFlavorList as $cdlFlavor) {
         $kdlFlavor = self::ConvertFlavorCdl2Kdl($cdlFlavor);
         $profile->_flavors[] = $kdlFlavor;
         KalturaLog::log("...F-->" . $kdlFlavor->ToString());
     }
     $trgList = array();
     $dlPrc = new KDLProcessor();
     $dlPrc->Generate($mediaSet, $profile, $trgList);
     $this->_errors = $this->_errors + $dlPrc->get_errors();
     $this->_warnings = $this->_warnings + $dlPrc->get_warnings();
     if (count($this->_errors) > 0) {
         $this->_rv = false;
     } else {
         $this->_rv = true;
     }
     foreach ($trgList as $trg) {
         KalturaLog::log("...T-->" . $trg->ToString());
         $this->_targetList[] = self::ConvertFlavorKdl2Cdl($trg);
     }
     return $this;
 }
Пример #2
0
 private function generateTargetFlavors(mediaInfo $cdlMediaInfo = null, $cdlFlavorList)
 {
     $mediaSet = new KDLMediaDataSet();
     if ($cdlMediaInfo != null) {
         self::ConvertMediainfoCdl2Mediadataset($cdlMediaInfo, $mediaSet);
     }
     KalturaLog::log("...S-->" . $mediaSet->ToString());
     $profile = new KDLProfile();
     /*
      * TEMPORARY - Look for WV cases in order to disable duplicate GOP generation. After a while this will be the default behaviour  
      */
     $isForWideVine = false;
     foreach ($cdlFlavorList as $cdlFlavor) {
         $kdlFlavor = self::ConvertFlavorCdl2Kdl($cdlFlavor);
         if ($kdlFlavor->_errors) {
             $this->_rv = false;
             return $this;
         }
         if (isset($kdlFlavor->_video) && preg_match('/widevine/', strtolower($kdlFlavor->_tags), $matches)) {
             $isForWideVine = true;
         }
         $profile->_flavors[] = $kdlFlavor;
         KalturaLog::log("...F-->" . $kdlFlavor->ToString());
     }
     if ($isForWideVine == true) {
         foreach ($profile->_flavors as $k => $kdlFlavor) {
             $profile->_flavors[$k]->_video->_forWideVine = true;
         }
     }
     $trgList = array();
     $dlPrc = new KDLProcessor();
     $dlPrc->Generate($mediaSet, $profile, $trgList);
     $this->_errors = $this->_errors + $dlPrc->get_errors();
     $this->_warnings = $this->_warnings + $dlPrc->get_warnings();
     if (count($this->_errors) > 0) {
         $this->_rv = false;
     } else {
         $this->_rv = true;
     }
     /*
      * For 'passthrough' quick&dirty
      
     		if(isset($mediaSet->_container) && $mediaSet->_container->_id=="arf")
     $isArf = true;
     		else
     $isArf = false;
     */
     foreach ($trgList as $trg) {
         KalturaLog::log("...T-->" . $trg->ToString());
         $cdlFlvrOut = self::ConvertFlavorKdl2Cdl($trg);
         /*
         			 * 'passthrough' temporal, quick&dirty implementation to support imitation of 
         			 * 'auto-inter-src' for webex/arf.
         			 
         			if($isArf==false && isset($trg->_transcoders)
         			&& $trg->_transcoders[0]->_id=="webexNbrplayer.WebexNbrplayer"){
         				$cdlFlvrOut->_passthrough=true;
         			}*/
         $this->_targetList[] = $cdlFlvrOut;
     }
     return $this;
 }
 public static function runMediasetTest(KDLMediaDataSet $mediaSet, &$dlPrc, $profile = null)
 {
     $inFile = realpath($mediaSet->_container->_fileName);
     //$mediaSet = 100; //new KDLMediaDataSet();
     KalturaLog::log("....S-->" . $mediaSet->ToString());
     //		unset($targetList); // Remarked by Tan-Tan $targetList doesn't exist
     $targetList = array();
     $errors = array();
     $warnings = array();
     $dlPrc = new KDLProcessor();
     $dlPrc->Generate($mediaSet, $profile, $targetList);
     $dlPrc->_targets = $targetList;
     $errors = $errors + $dlPrc->get_errors();
     $warnings = $warnings + $dlPrc->get_warnings();
     if (count($errors) > 0) {
         $rv = false;
     } else {
         $rv = true;
     }
     if ($rv == false) {
         KalturaLog::log("....E==>");
         print_r($errors);
         KalturaLog::log("\n");
     }
     KalturaLog::log("....W==>");
     print_r($warnings);
     KalturaLog::log("\n");
     if ($profile == null) {
         return;
     }
     $xmlStr = KDLProcessor::ProceessFlavorsForCollection($targetList);
     KalturaLog::log(__METHOD__ . "-->XML-->\n" . print_r($xmlStr, true) . "\n<--");
     foreach ($targetList as $target) {
         $output = array();
         $rv = 0;
         KalturaLog::log("...T-->" . $target->ToString());
         $outFile = "aaa1.mp4";
         if (file_exists($outFile)) {
             unlink($outFile);
         }
         $cmdLineGenerator = $target->SetTranscoderCmdLineGenerator($inFile, $outFile);
         $cmdLineGenerator->_clipDur = 10000;
         $exeStr = "FFMpeg " . $cmdLineGenerator->FFMpeg(null);
         //			KalturaLog::log( ".CMD-->".$exeStr);
         $exeStr = "cli_encode " . $cmdLineGenerator->Generate(new KDLOperationParams(KDLTranscoders::ON2), 1000);
         kLog::log(".CMD-->" . $exeStr);
         $exeStr = "mencoder " . $cmdLineGenerator->Generate(new KDLOperationParams(KDLTranscoders::MENCODER), 1000);
         kLog::log(".CMD-->" . $exeStr);
         $exeStr = "ffmpeg " . $cmdLineGenerator->Generate(new KDLOperationParams(KDLTranscoders::FFMPEG), 1000);
         kLog::log(".CMD-->" . $exeStr);
         exec($exeStr, $output, $rv);
         kLog::log("..RV-->In" . $inFile . "==>");
         if (!file_exists($outFile) || kFile::fileSize($outFile) == 0) {
             kLog::log("Failed");
         } else {
             kLog::log("Succeeded, Filesize:" . kFile::fileSize($outFile));
             $mediaInfoStr = shell_exec(MediaInfoProgram . " " . realpath($outFile));
             $medLoader = new KDLMediaInfoLoader($mediaInfoStr);
             $product = new KDLFlavor();
             $medLoader->Load($product);
             $target->ValidateProduct($mediaSet, $product);
             kLog::log("\n" . $mediaInfoStr);
             //				kLog::log( ".PRD-->".$product->ToString());
             //				unlink($outFile);
         }
     }
 }