PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/package/app/app/tests/KDLTest/runTest.php

https://bitbucket.org/pandaos/kaltura
PHP | 579 lines | 332 code | 49 blank | 198 comment | 19 complexity | bdb69f9af7d352e50981df2873ea96c6 MD5 | raw file
Possible License(s): AGPL-3.0, GPL-3.0, BSD-3-Clause, LGPL-2.1, GPL-2.0, LGPL-3.0, JSON, MPL-2.0-no-copyleft-exception, Apache-2.0
  1. <?
  2. Include_once 'runTestAux.php';
  3. require_once 'K:\opt\kaltura\app\infra\cdl\kOperator.php';
  4. require_once 'K:\opt\kaltura\app\infra\cdl\kOperatorSets.php';
  5. include_once("K:\opt\kaltura\app\infra\cdl\kdl\KDLMediaInfoLoader.php");
  6. include_once('K:\opt\kaltura\app\infra\cdl\kdl\KDLProcessor.php');
  7. include_once 'K:\opt\kaltura\app\infra\cdl\kdl\KDLUtils.php';
  8. include_once 'K:\opt\kaltura\app\infra\cdl\kdl\KDLWrap.php';
  9. include_once 'K:\opt\kaltura\app\infra\cdl\kdl\KDLTest.php';
  10. Include_once 'K:\opt\kaltura\app\plugins/quick_time_tools/lib/KDLTranscoderQTPTools.php';
  11. Include_once 'K:\opt\kaltura\app\plugins/fast_start/lib/KDLOperatorQTFastStart.php';
  12. Include_once 'K:\opt\kaltura\app\plugins/expression_encoder/lib/KDLOperatorExpressionEncoder.php';
  13. Include_once 'K:\opt\kaltura\app\plugins/inlet_armada/lib/KDLOperatorInletArmada.php';
  14. include_once('K:\opt\kaltura\app\alpha\lib\BaseEnum.php');
  15. include_once('K:\opt\kaltura\app\alpha\lib\enums\conversionEngineType.php');
  16. //include_once('K:\opt\kaltura\app\admin_console\lib\Kaltura\KalturaClient.php');
  17. //include_once('K:\opt\kaltura\app\admin_console\lib\Kaltura\KalturaClientBase.php');
  18. define("MediaInfoProgram", "mediainfo");
  19. define("ContentDir", "C:\\Anatol\\Work\\Kaltura\\Media");
  20. /* =========================================================================
  21. * MAIN
  22. */
  23. /*
  24. 9spkxiz8m4_100007.mp4
  25. e5u7e2hzia 116487.flv
  26. avi+mpeg4+++angel_decomb.avi M*HD-2Blade.Runner.1982.Final.Cut.720p.mkv.avi
  27. big_buck_bunny_720p_surround.avi
  28. Sample556.m2ts
  29. Kuzi\\ff4_480.mov
  30. NotSupported\DVC.wzjujipkb1.mov
  31. 00_ondveoeu7o_6331_1
  32. 00_vr8gv4colh_752_1.flv
  33. ocyuvkbbx4.mov
  34. 53038943001_54779358001_VS1-E1-Sc4-YouTube-HQ---1-5.flv
  35. Mammoth*.mov
  36. VP6.mh3dcp57bw.flv - no Audio
  37. o1xosfknow.mp3.aiff.mp3
  38. FLYING_P.MP3
  39. C:\Anatol\Work\Kaltura\Media\NotSupported\ALAC.mov++alac++ALAC_6ch.mov
  40. TestVideo.flv
  41. webcam.slova3mhmy.flv
  42. avi+h263+++h263p_artifacts1.avi
  43. avi+indeo3+++1-dog.avi
  44. Serena_Williams_threatens_a_line_judge(HQ).HQ.mp4
  45. 20090317180556.m2ts
  46. lkjk9j6wco.avi
  47. Avatar-1080p.mov(Source).mov
  48. 0_8veiqmna.flv
  49. 0_gz7q5qj6.mov
  50. 0_pmje1q9j.avi
  51. 0_l9355ult.mp4 - zero
  52. 0_o6q4j49k.3gp - zeroed frame size
  53. Rotated.0_22ta0dw2.mov
  54. 0_ybws36sj.flv -
  55. NotSupported\MultiVideo.0_0a03bfsu.mov
  56. NoAudio.0_iywkt4tj.mp4
  57. 0_4zt33loq.flv - vp6
  58. 0_myw8j6ev.wma
  59. Rotated.0_22ta0dw2.mov
  60. Canon.Rotated.0_qaqsufbl.avi
  61. MULTI_STREAMS.e6y9ss9374.flv.mov
  62. MULTI_STREAM.0_p5ds1pr8.wmv
  63. MSSpeech.0_r6qkhpy6.wmv
  64. NotSupported\ICOD.3203qlvb1w.mov
  65. 6ch.mp4
  66. FLV_NELLIMOSER.0_v4lcudxr.flv
  67. Real test file.rm
  68. stuff.wav.wav
  69. How_to_Access_my_Contacts.mp4 - low br, presentation
  70. 0_2leylrz6.rm
  71. 0_apdhpdiz_0_tu8lodt3_1.mp3 - invalid mediainfo
  72. VP6.mh3dcp57bw.flv
  73. */
  74. //testOperatorJSON();
  75. //return
  76. // runXMLtest("K:\Media\join\\mixTest.xml");
  77. // print_r(FramesizeToAspectRatio(1282, 850));
  78. runWrapperTest(ContentDir, "Serena_Williams_threatens_a_line_judge(HQ).HQ.mp4");
  79. // runStandaloneTest("K:\Media", "TestVideo.flv");
  80. // parsePlayList("k:/web/content/r31v1/entry/data/4/268/0_kjzze1dp_0_zewz6krv_2.appl/playlist.m3u8", "zzz");
  81. return;
  82. /*
  83. * MAIN
  84. *==========================================================/
  85. /* ------------------------------
  86. * function mediaTestStub
  87. */
  88. function mediaTestStub($fileName, $flavorList)
  89. {
  90. $dlPrc = new KDLProcessor();
  91. KDLTest::runFileTest($fileName, $dlPrc, $flavorList);
  92. print_r($flavorList->_flavors[0]);
  93. $cdlFlavor=KDLWrap::ConvertFlavorKdl2Cdl($dlPrc->_targets[0]);
  94. echo "<br>\n";
  95. }
  96. /* ------------------------------
  97. * function mediaTestStub
  98. */
  99. function mediaTestStub1($fileName, $flavorList)
  100. {
  101. kLog::log($fileName);
  102. $str = shell_exec(MediaInfoProgram." ". realpath($fileName));
  103. $mdLoader = new KDLMediaInfoLoader($str);
  104. $mediaInfoObj1 = new KDLMediaDataSet();
  105. $mdLoader->Load($mediaInfoObj1);
  106. kLog::log($mediaInfoObj1->ToString());
  107. $str = shell_exec(MediaInfoProgram." ". realpath($fileName));
  108. $mdLoader = new KDLMediaInfoLoader($str);
  109. $mediaInfoObj2 = new KDLMediaDataSet();
  110. $mdLoader->Load($mediaInfoObj2);
  111. $mediaInfoObj2->_video->_id="aaa";
  112. kLog::log($mediaInfoObj2->ToString());
  113. if($mediaInfoObj1==$mediaInfoObj2)
  114. kLog::log("Equals");
  115. else
  116. kLog::log("NOT Equals");
  117. echo "<br>\n";
  118. }
  119. /*
  120. cdl
  121. KDLFlavor.php (9 matches)
  122. 52: $this->_warnings[KDLConstants::VideoIndex][]="Redundant bitrate";
  123. 110: $product->_warnings[KDLConstants::VideoIndex][] = "Product duration too short - ".($prdVid->_duration/1000)."sec, required - ".($srcVid->_duration/1000)."sec.";
  124. 113: $product->_warnings[KDLConstants::VideoIndex][] = "Product bitrate too low - ".$prdVid->_bitRate."kbps, required - ".$trgVid->_bitRate."kbps.";
  125. 128: $product->_warnings[KDLConstants::AudioIndex][] = "Product duration too short - ".($prdAud->_duration/1000)."sec, required - ".($srcAud->_duration/1000)."sec.";
  126. 131: $product->_warnings[KDLConstants::AudioIndex][] = "Product bitrate too low - ".$prdAud->_bitRate."kbps, required - ".$trgAud->_bitRate."kbps.";
  127. 201: $this->_warnings[KDLConstants::VideoIndex][] = "The target flavor bitrate {".$target->_video->_bitRate."} does not comply with the requested bitrate (".$this->_video->_bitRate.").";
  128. 250: $this->_warnings[KDLConstants::VideoIndex][] =
  129. 403: $this->_warnings[$keyPart][] = "The transcoder (".$key.") can not process the (".$sourcePart->_id."/".$sourcePart->_format. ").";
  130. 416: $this->_warnings[KDLConstants::VideoIndex][] = "The transcoder (".$key.") does not handle properly DAR<>PAR.";
  131. KDLMediaDataSet.php
  132. 51: $warnings[KDLConstants::VideoIndex][] = "Invalid bitrate value. Set to defualt ".$this->_video->_bitRate;
  133. KDLMediaObjectData.php (4 matches)
  134. 85: $warnings[$section][] = "Invalid duration (" . $this->_duration . "msec)";
  135. 89: $warnings[$section][] = "Invalid bitrate (" . $this->_bitRate . "kbps)";
  136. 243: $warnings[KDLConstants::VideoIndex][] = "Invalid frame rate (" . $this->_frameRate . "fps)";
  137. 247: $warnings[KDLConstants::VideoIndex][] = "Invalid DAR (" . $this->_dar. ")"; */
  138. /* ---------------------------
  139. * testOperatorJSON
  140. */
  141. function testOperatorJSON()
  142. {
  143. if(1){
  144. require_once '../kOperator.php';
  145. require_once '../kOperatorSets.php';
  146. // $transObjArr=KDLUtils::parseTranscoderList("(1),(2#99#5),98,4,1","(--FE_SOMETING 0)|(-b 30#-a 23 -c ee# vcodec;c:7)|--FE_AAA 1234||101");
  147. //print_r($transObjArr);
  148. //print_r($transObjArr);
  149. $json2 = '[[{"id":2}]]';
  150. $json3 = '[[{\"id\":2,\"extra\":null,\"command\":\"-i __inFileName__ -vcodec flv -b 251k -s 320x240 -r 14.96 -g 60 -acodec libmp3lame -ab 64k -ar 44100 -ac 2 -f flv -y __outFileName__\"},{\"id\":98,\"extra\":null,\"command\":\"-i __inFileName__ -vcodec flv -b 251k -s 320x240 -r 14.96 -g 60 -acodec libmp3lame -ab 64k -ar 44100 -ac 2 -f flv -y __outFileName__\"}]]';
  151. $json4 = '[[{"id":2,"extra":null,"command":"-i __inFileName__ -vcodec flv -b 251k -s 320x240 -r 14.96 -g 60 -acodec libmp3lame -ab 64k -ar 44100 -ac 2 -f flv -y __outFileName__"},{"id":98,"extra":null,"command":"-i __inFileName__ -vcodec flv -b 251k -s 320x240 -r 14.96 -g 60 -acodec libmp3lame -ab 64k -ar 44100 -ac 2 -f flv -y __outFileName__"}]]';
  152. $json = '
  153. [
  154. [
  155. {
  156. "id":6,
  157. "extra":"A extra params 1 ",
  158. "command":"A command line data 1",
  159. "azaz":12345
  160. }
  161. ],
  162. [
  163. {
  164. "id":1,
  165. "extra":"A extra params 1 ",
  166. "command":"A command line data 1"
  167. },
  168. {
  169. "id":2,
  170. "extra":"A extra params 2",
  171. "command":"A command line data 2"
  172. }
  173. ],
  174. [
  175. {
  176. "id":1,
  177. "extra":"B extra params 1 ",
  178. "command":"B command line data 1"
  179. },
  180. {
  181. "id":2,
  182. "extra":"B extra params 2",
  183. "command":"B command line data 2"
  184. }
  185. ]
  186. ]';
  187. $oprSets = new kOperatorSets();
  188. $oprSets->setSerialized(stripslashes($json));
  189. print_r($oprSets);
  190. echo "<br>\n\n";
  191. echo "333333333333333333";
  192. return;
  193. $transObjArr = KDLWrap::convertOperatorsCdl2Kdl($json);
  194. KDLUtils::RecursiveScan($transObjArr, "transcoderSetFuncTest", KDLConstants::$TranscodersCdl2Kdl, "");
  195. echo "<br>\n\n";
  196. print_r($transObjArr);
  197. $cdlOprSets = new kOperatorSets;
  198. // $cdlOprSets = KDLWrap::convertOperatorsKdl2Cdl($transObjArr);
  199. // print_r($cdlOprSets);
  200. //return;
  201. foreach($transObjArr as $transObj) {
  202. $auxArr = array();
  203. if(is_array($transObj)) {
  204. foreach($transObj as $tr) {
  205. $opr = new kOperator();
  206. $key=array_search($tr->_id,KDLWrap::$TranscodersCdl2Kdl);
  207. if($key===false){
  208. $opr->id = $tr->_id;
  209. }
  210. else{
  211. $opr->id = $key;
  212. }
  213. $opr->extra = $tr->_extra;
  214. $opr->command = $tr->_cmd;
  215. $auxArr[] = $opr;
  216. }
  217. }
  218. else {
  219. $opr = new kOperator();
  220. $key=array_search($transObj->_id,KDLWrap::$TranscodersCdl2Kdl);
  221. if($key===false){
  222. $opr->id = $transObj->_id;
  223. }
  224. else{
  225. $opr->id = $key;
  226. }
  227. $opr->extra = $transObj->_extra;
  228. $opr->command = $transObj->_cmd;
  229. $auxArr[] = $opr;
  230. }
  231. $cdlOprSets->addSet($auxArr);
  232. }
  233. print_r($cdlOprSets);
  234. return;
  235. }
  236. }
  237. /* ---------------------------
  238. * getMediasetFromFile($filename)
  239. */
  240. function getMediasetFromFile($filename)
  241. {
  242. $mediaInfoStr = shell_exec(MediaInfoProgram." ". realpath($filename));
  243. $mdLoader = new KDLMediaInfoLoader($mediaInfoStr);
  244. $mediaSet = new KDLMediaDataSet();
  245. $mdLoader->Load($mediaSet);
  246. return $mediaSet;
  247. }
  248. /* ---------------------------
  249. * runStandaloneTest
  250. */
  251. function runStandaloneTest($contentDir, $patern)
  252. {
  253. ////////////////////////////////////////////
  254. // Nokia suited flavor
  255. //$profile->_flavors[] = KDLTest::simulateFlavor(KDLVideoTarget::MP4, KDLVideoTarget::MPEG4, 640, 360, 600);
  256. $profile = new KDLProfile();
  257. $profile->_flavors[] = KDLTest::simulateFlavor(
  258. KDLContainerTarget::MP4, KDLVideoTarget::H264,
  259. 0, 352, 2500,KDLAudioTarget::AAC,0,22050, 100,0, "2");
  260. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLContainerTarget::ISMV, KDLVideoTarget::WVC1A, 0, 352, 4000,"aac");
  261. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLContainerTarget::MP4, KDLVideoTarget::H264B, 0, 280, 600);
  262. // $profile->_flavors[0]->_audio=null;
  263. // $profile->_flavors[] = KDLTest::simulateFlavor("mp3", KDLAudioTarget::MP3, 0, 0, 0);
  264. // $profile->_flavors[1]->_video=null;
  265. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLContainerTarget::ISMV, null, 0, 1080, 4000);
  266. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLContainerTarget::ISMV, null, 0, 720, 2500);
  267. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLVideoTarget::FLV, null, 0, 720, 1350);
  268. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLVideoTarget::FLV, null, 0, 288, 750);
  269. // $profile->_flavors[] = KDLTest::simulateFlavor(KDLVideoTarget::FLV, null, 0, 288, 400);
  270. //$profile->_flavors[0]->_video=null;
  271. // $profile->_flavors[] = KDLTest::simulateFlavor("mp4", null, 0, 720, 1350);
  272. // $profile->_flavors[] = KDLTest::simulateFlavor("mp4", null, 0/*512*/, 288, 750);
  273. // $profile->_flavors[] = KDLTest::simulateFlavor("mp4", null, 0/*512*/, 288, 400);
  274. echo "<br>\n-----------<br>\nProfile<br>\n----------<br>\n";
  275. echo $profile->ToString()."<br>\n";
  276. // C:\\xampp\htdocs\mvdr6t454m.mov
  277. /*
  278. $exeStr = MediaInfoProgram." C:\Anatol\Work\Kaltura\Media\\0_myw8j6ev.wma";
  279. $mediaInfoStr = shell_exec($exeStr);// $mediaInfoSample6; //
  280. echo $mediaInfoStr."\n";
  281. $mdLoader = new KDLMediaInfoLoader($mediaInfoStr);
  282. $mediaInfoObj = new KDLMediaDataSet();
  283. $mdLoader->Load($mediaInfoObj);
  284. print_r($mediaInfoObj);
  285. if($mediaInfoObj->IsDataSet()) {
  286. echo "IsDataSet - true\n";
  287. }
  288. else {
  289. echo "IsDataSet - false\n";
  290. }
  291. // $tagList[] = "itunes";
  292. $tagList[] = "web";
  293. $tagList[] = "mbr";
  294. $tagList[] = "flv";
  295. $tagList[] = "slweb";
  296. echo "<br>\nIn tags-->";
  297. print_r($tagList);
  298. $profile->_flavors[0]->_tags = $tagList;
  299. // $tagsOut = KDLFlavor2Tags::ToTags($mediaInfoObj, $profile->_flavors[0]);
  300. $tagsOut = $mediaInfoObj->ToTags($tagList);
  301. if(count($tagsOut)==1)
  302. echo "Found";
  303. else
  304. echo "Not found";
  305. echo "<br>\nOut tags-->";
  306. print_r($tagsOut);
  307. return;
  308. */
  309. /*
  310. *
  311. */
  312. echo "<br>\n";
  313. $dlPrc = new KDLProcessor();
  314. KDLTest::runFileTest("$contentDir\\$patern", $dlPrc, $profile);
  315. print_r($profile->_flavors[0]);
  316. echo "<br>\n";
  317. $kdlMedSet = getMediasetFromFile("$contentDir\\$patern");
  318. return;
  319. }
  320. /* ---------------------------
  321. *
  322. */
  323. function runWrapperTest($contentDir, $patern)
  324. {
  325. echo "<br>\n";
  326. $kdlSrcMedSet = getMediasetFromFile("$contentDir\\$patern");
  327. $cdlSrcMedInf = new mediaInfo();
  328. $cdlSrcMedInf->LoadFromMediaset($kdlSrcMedSet);
  329. $cdlFlavors []=new flavorParams();
  330. $cdlFlavors[0]->simulate(KDLContainerTarget::MP4, KDLVideoTarget::H264B,
  331. 0, 352, 2500,KDLAudioTarget::AAC,96,22050,"2,3");
  332. $cdlTargets;
  333. $cdlTargets = KDLWrap::CDLGenerateTargetFlavors($cdlSrcMedInf, $cdlFlavors);
  334. $cmdLine=KDLWrap::CDLProceessFlavorsForCollection($cdlTargets->_targetList);
  335. if($cdlTargets->_targetList[0]->engine_version==0){
  336. $cmdLine = $cdlTargets->_targetList[0]->command_lines;
  337. }
  338. else{
  339. $cmdLine = $cdlTargets->_targetList[0]->operators;
  340. $oprSets = new kOperatorSets();
  341. // $operators = stripslashes($operators);
  342. //kLog::log(__METHOD__."\ncdlOperators(stripslsh)==>\n".print_r($operators,true));
  343. $oprSets->setSerialized($cdlTargets->_targetList[0]->operators);
  344. $oprArr = $oprSets->getSets();
  345. $cmdLine=$oprArr[0][0]->command;
  346. }
  347. $outFile = "aaa111.mpg";
  348. $exec_cmd =
  349. str_replace (
  350. array(KDLCmdlinePlaceholders::InFileName, KDLCmdlinePlaceholders::OutFileName, KDLCmdlinePlaceholders::ConfigFileName),
  351. array("$contentDir\\$patern", $outFile, "mko"),
  352. $cmdLine);
  353. /*
  354. $xmlFileName = "k:\\pre.xml";
  355. $fHd = fopen($xmlFileName, "w");
  356. fwrite($fHd,$exec_cmd);
  357. fclose($fHd);
  358. //c:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -file C:\opt\kaltura\app\batch\batches\Convert\scripts\runee3.ps1 C:\expressionencoder\ExpressionEncoder.dll W:\/content/entry/data/29/399/0_0bybp8ez_0_t75dk08i_1.mov C:\opt\kaltura\tmp\convert\convert_0_0bybp8ez_4c24801bbb92f.xml >> "C:\opt\kaltura\tmp\convert\0_0bybp8ez_0_2.log" 2>&1
  359. $fHd = fopen("k:\\run.bat", "w");
  360. fwrite($fHd,"c:\\Windows\\SysWOW64\\WindowsPowerShell\\v1.0\\powershell.exe -file K:\\opt\\kaltura\\app\\batch\\batches\\Convert\\scripts\\runee3.ps1 C:\\expressionencoder\\ExpressionEncoder.dll $contentDir\\$patern $xmlFileName\npause");
  361. fclose($fHd);
  362. */
  363. echo "1<br>\n";
  364. echo($exec_cmd);
  365. // exec("ffmpeg ".$exec_cmd);
  366. if(!file_exists($outFile) || filesize($outFile)==0) {
  367. kLog::log( "\nFailed");
  368. }
  369. else {
  370. kLog::log( "\nSucceeded, Filesize:".filesize($outFile));
  371. }
  372. // $cdlAsset = new flavorAsset;
  373. // KDLWrap::ConvertMediainfoCdl2FlavorAsset($cdlMedInf, $cdlAsset);
  374. $cdlMedInf = new mediaInfo();
  375. $kdlMedSet = getMediasetFromFile("$outFile");
  376. $cdlMedInf->LoadFromMediaset($kdlMedSet);
  377. kLog::log( "\npre CDLValidateProduct\n");
  378. KDLWrap::CDLValidateProduct($cdlSrclMedInf, $cdlTargets->_targetList[0], $cdlMedInf);
  379. // print_r($kdlFlavor);
  380. return;
  381. }
  382. function runXMLtest($xmlFileName)
  383. {
  384. $config = new KalturaConfiguration("100");
  385. $config->serviceUrl = 'trunk';
  386. $client = new KalturaClient($config);
  387. $client->setKs('YjQ2ZjFlY2FkNzJiMTRlYWZhZjhjZGVhY2ZkNjFjMmVlZDBhODZmY3wxMDA7MTAwOzEyODkyMjA2Mjc7MjsxMjg5MTM0MjI3LjQ3OzEwMDs7');
  388. // dofileSync($client, '0_t2jxptmg');
  389. doIt($client, $xmlFileName, "k:\media\join\avidemuxTest.scp");
  390. return;
  391. kLog::Log($xmlFileName);
  392. $xml = simplexml_load_file(realpath($xmlFileName));
  393. print_r($xml);
  394. foreach ($xml->VideoAssets->vidAsset as $vidAsset) {
  395. $attr = $vidAsset->attributes();
  396. $entryId = $attr[k_id];
  397. $attr = $vidAsset->StreamInfo->attributes();
  398. $fileName = $attr[file_name];
  399. echo "\nEntryId ($entryId), FileName($fileName)\n";
  400. $results = $client->flavorAsset->getByEntryId('0_tyg28fov');
  401. print_r($results[0]->videoCodecId);
  402. }
  403. return;
  404. }
  405. /*
  406. *
  407. */
  408. function doIt($clientObj, $mixFileName, $aviDemuxScp)
  409. {
  410. kLog::Log($mixFileName);
  411. $xml = simplexml_load_file(realpath($mixFileName));
  412. // print_r($xml);
  413. $jnDataArr = array();
  414. foreach ($xml->VideoAssets->vidAsset as $vidAsset) {
  415. $jnData = new JoinEntityData();
  416. $attr = $vidAsset->attributes();
  417. $jnData->_entryId = (string)$attr[k_id];
  418. // $entryId = $eId[0];
  419. // print_r($entryId);
  420. // $attr = $vidAsset->StreamInfo->attributes();
  421. // $jnData->_fileName = (string)$attr[file_name];
  422. $assets = $clientObj->flavorAsset->getByEntryId($jnData->_entryId);
  423. $jnData->_assetId = null;
  424. foreach ($assets as $asset) {
  425. if($asset->isOriginal==1) {
  426. $jnData->_assetId = $asset->id;
  427. break;
  428. }
  429. }
  430. $jnData->_fileName = dofileSync($clientObj, $jnData->_assetId);
  431. if(!isset($jnData->_fileName)) {
  432. return null;
  433. }
  434. $filter = new KalturaMediaInfoFilter();
  435. $filter->flavorAssetIdEqual = $asset->id;
  436. $mediaInfos = $clientObj->mediaInfo->listAction($filter, null);
  437. $jnData->_fps = $mediaInfos->objects[0]->videoFrameRate;
  438. $jnData->_dur = $mediaInfos->objects[0]->videoDuration;
  439. $jnDataArr[] = $jnData;
  440. print_r($jnData);
  441. // print_r($asset);
  442. // echo "\nEntryId ($entryId), FileName($fileName), Asset($assetId)\n";
  443. //print_r($mediaInfos);
  444. }
  445. $fHd = fopen($aviDemuxScp, "w");
  446. fwrite($fHd,"var app = new Avidemux();\n");
  447. $totalDur=0;
  448. $str1=null;
  449. $str2=null;
  450. $idx=0;
  451. foreach ($jnDataArr as $jnData) {
  452. if($str1==null) {
  453. $str1='app.load("'.$jnData->_fileName.'");'."\n";
  454. }
  455. else{
  456. $str1.='app.append("'.$jnData->_fileName.'");'."\n";
  457. }
  458. $str2.="app.addSegment($idx,0,".(int)($jnData->_dur*$jnData->_fps/1000).");\n";//."\n"; "
  459. // $str2.='app.addSegment(0,0,'.$jnData->_dur.');';//."\n"; "
  460. $totalDur += $jnData->_dur;
  461. $idx++;
  462. }
  463. fwrite($fHd, $str1);
  464. fwrite($fHd, $str2);
  465. fwrite($fHd, "app.markerA=0;\n");
  466. $totalDur=(int)($totalDur*$jnData->_fps/1000)-1;
  467. fwrite($fHd, "app.markerB=$totalDur;\n");
  468. fwrite($fHd, "app.video.setPostProc(3,3,0);\n");
  469. fwrite($fHd, "app.video.fps1000 = ".$jnData->_fps*1000..";\n");
  470. fwrite($fHd, 'app.video.codec("Copy", "CQ=4", "0 ");'."\n");
  471. //** Audio **
  472. fwrite($fHd, 'app.audio.reset();
  473. app.audio.codec("copy",0,0,"");
  474. app.audio.normalizeMode=0
  475. app.audio.normalizeValue=0;
  476. app.audio.delay=0;
  477. app.audio.mixer="NONE";
  478. app.setContainer("MP4");
  479. setSuccess(1);');
  480. fclose($fHd);
  481. }
  482. /*
  483. *
  484. */
  485. function dofileSync($clientObj, $assetId)
  486. {
  487. $filter = new KalturaFileSyncFilter();
  488. //$filter->partnerIdEqual = $partnerid;
  489. $filter->objectTypeEqual = KalturaFileSyncObjectType::FLAVOR_ASSET;
  490. //$filter->objectIdEqual = '';
  491. $filter->objectIdIn = $assetId;
  492. $syncResults = $clientObj->fileSync->listAction($filter, null);
  493. foreach($syncResults->objects as $sync){
  494. if(isset($sync->isCurrentDc) && $sync->isCurrentDc==1) {
  495. $fPath = $sync->fileRoot.$sync->filePath;
  496. return ($fPath);
  497. }
  498. }
  499. return null;
  500. }
  501. class JoinEntityData {
  502. public $_entryId;
  503. public $_assetId;
  504. public $_fileName;
  505. public $_fps;
  506. public $_dur;
  507. };
  508. function parsePlayList($fileIn, $fileOut)
  509. {
  510. $fdIn = fopen($fileIn, 'r');
  511. if($fdIn==false)
  512. return false;
  513. $fdOut = fopen($fileOut, 'w');
  514. if($fdOut==false)
  515. return false;
  516. $strIn=null;
  517. while ($strIn=fgets($fdIn)){
  518. if(strstr($strIn,"---")){
  519. $i=strrpos($strIn,"/");
  520. $strIn = substr($strIn,$i+1);
  521. }
  522. fputs($fdOut,$strIn);
  523. echo $strIn;
  524. }
  525. fclose($fdOut);
  526. fclose($fdIn);
  527. return true;
  528. }