public function testGetterAndSetter() { $tags = array('tag_a', 'tag_b'); $language = 'portuñol'; $url = '/mnt/video/123/23435.mp4'; $path = '/mnt/video/123/23435.mp4'; $mime = 'video/mpeg4'; $duration = 3456; $acodec = 'aac'; $vcodec = 'mpeg4-HP'; $bitrate = 10000; $framerate = '25/1'; $only_audio = false; $channels = 1; $duration = 66666; $width = 1920; $height = 1080; $hide = false; $numview = 3; $resolution = array('width' => $width, 'height' => $height); $track = new Track(); $track->setTags($tags); $track->setLanguage($language); $track->setUrl($url); $track->setPath($path); $track->setMimeType($mime); $track->setDuration($duration); $track->setAcodec($acodec); $track->setVcodec($vcodec); $track->setBitrate($bitrate); $track->setFramerate($framerate); $track->setOnlyAudio($only_audio); $track->setChannels($channels); $track->setDuration($duration); $track->setWidth($width); $track->setHeight($height); $track->setHide($hide); $track->setNumview($numview); $track->setResolution($resolution); $this->assertEquals($tags, $track->getTags()); $this->assertEquals($language, $track->getLanguage()); $this->assertEquals($url, $track->getUrl()); $this->assertEquals($path, $track->getPath()); $this->assertEquals($mime, $track->getMimeType()); $this->assertEquals($duration, $track->getDuration()); $this->assertEquals($acodec, $track->getAcodec()); $this->assertEquals($vcodec, $track->getVcodec()); $this->assertEquals($bitrate, $track->getBitrate()); $this->assertEquals($framerate, $track->getFramerate()); $this->assertFalse($only_audio, $track->getOnlyAudio()); $this->assertEquals($channels, $track->getChannels()); $this->assertEquals($duration, $track->getDuration()); $this->assertEquals($width, $track->getWidth()); $this->assertEquals($height, $track->getHeight()); $this->assertFalse($hide, $track->getHide()); $this->assertEquals($numview, $track->getNumview()); $this->assertEquals($resolution, $track->getResolution()); }
private function createNewMultimediaObjectWithTrack() { $track = new Track(); $track->addTag('profile:master'); $track->setPath('path/to/track.mp4'); $multimediaObject = new MultimediaObject(); $multimediaObject->setTitle('MultimediaObject test'); $multimediaObject->addTrack($track); $this->dm->persist($multimediaObject); $this->dm->flush(); return $multimediaObject; }
public function createTrack(MultimediaObject $multimediaObject, $pathEnd, $profileName, $language = null, $description = array()) { $profile = $this->profileService->getProfile($profileName); $track = new Track(); $track->addTag('profile:' . $profileName); if ($profile['master']) { $track->addTag('master'); } if ($profile['display']) { $track->addTag('display'); } foreach (array_filter(preg_split('/[,\\s]+/', $profile['tags'])) as $tag) { $track->addTag(trim($tag)); } if (!empty($description)) { $track->setI18nDescription($description); } $track->setLanguage($language); $track->setPath($pathEnd); if (isset($profile['streamserver']['url_out'])) { $track->setUrl(str_replace(realpath($profile['streamserver']['dir_out']), $profile['streamserver']['url_out'], $pathEnd)); } $this->inspectionService->autocompleteTrack($track); $track->setOnlyAudio($track->getWidth() == 0); $track->setHide(!$profile['display']); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); $this->dm->persist($multimediaObject); $this->dm->flush(); return $track; }
public function testAutocompleteTrackWithAudioAndVideo() { $file1 = $this->resources_dir . "CAMERA.mp4"; $file2 = $this->resources_dir . "SCREEN.mp4"; $track1 = new Track(); $track2 = new Track(); $is = new InspectionFfmpegService(); $track1->setPath($file1); $track2->setPath($file2); $is->autocompleteTrack($track1); $is->autocompleteTrack($track2); $mime_type1 = 'video/mp4'; $bitrate1 = '4320609'; // mediainfo ='4323478'; $duration1 = '2'; $size1 = '551784'; $vcodec1 = 'h264'; // mediainfo = 'AVC'; $framerate1 = '25.000'; // Also works with $framerate = '25'; $width1 = '960'; $height1 = '720'; $acodec1 = 'aac'; //mediainfo = 'AAC'; // Test general properties $this->assertEquals($mime_type1, $track1->getMimetype()); $this->assertEquals($bitrate1, $track1->getBitrate()); $this->assertEquals($duration1, $track1->getDuration()); $this->assertEquals($size1, $track1->getSize()); // Test video properties $this->assertEquals($vcodec1, $track1->getVcodec()); $this->assertEquals($framerate1, $track1->getFramerate()); $this->assertEquals($width1, $track1->getWidth()); $this->assertEquals($height1, $track1->getHeight()); // Test audio properties $this->assertFalse($track1->getOnlyAudio()); $this->assertEquals($acodec1, $track1->getAcodec()); $mime_type2 = 'video/mp4'; $bitrate2 = '847600'; $duration2 = '2'; $size2 = '116545'; $vcodec2 = 'h264'; // mediainfo = 'AVC'; $framerate2 = '10'; // mediainfo = 9.091', it is variable fr. with max =10; $width2 = '1200'; // FIXME mediainfo and ffprobe shows height = 900. $height2 = '900'; $acodec2 = 'aac'; //mediainfo = 'AAC'; // Test general properties $this->assertEquals($mime_type2, $track2->getMimetype()); $this->assertEquals($bitrate2, $track2->getBitrate()); $this->assertEquals($duration2, $track2->getDuration()); $this->assertEquals($size2, $track2->getSize()); // Test video properties $this->assertEquals($vcodec2, $track2->getVcodec()); $this->assertEquals($framerate2, $track2->getFramerate()); $this->assertEquals($width2, $track2->getWidth()); $this->assertEquals($height2, $track2->getHeight()); // Test audio properties $this->assertFalse($track2->getOnlyAudio()); $this->assertEquals($acodec2, $track2->getAcodec()); }
public function testPicExtractorAudioError() { // TODO: Remove this line when adding final default audio image $this->markTestSkipped('S'); $mmsPicService = $this->getMockBuilder('Pumukit\\SchemaBundle\\Services\\MultimediaObjectPicService')->disableOriginalConstructor()->getMock(); $mmsPicService->expects($this->any())->method('addPicFile')->will($this->returnValue(null)); $picExtractorService = $this->getMockBuilder('Pumukit\\EncoderBundle\\Services\\PicExtractorService')->disableOriginalConstructor()->getMock(); $picExtractorService->expects($this->any())->method('extractPic')->will($this->returnValue('success')); $picExtractorListener = new PicExtractorListener($this->dm, $mmsPicService, $picExtractorService, $this->logger, $this->autoExtractPic); $series = $this->factoryService->createSeries(); $mm = $this->factoryService->createMultimediaObject($series); $track = new Track(); $track->addTag("master"); $track->setPath($this->videoPath); $track->setOnlyAudio(true); $track->setWidth(640); $track->setHeight(480); $mm->addTrack($track); $this->dm->persist($mm); $this->dm->flush(); $this->assertTrue($mm->getPics()->isEmpty()); $this->assertEquals(0, count($mm->getPics()->toArray())); $this->assertFalse($this->invokeMethod($picExtractorListener, 'generatePic', array($mm, $track))); }
public function testGenerateJobsForAudio() { $track = new Track(); $track->addTag("master"); $track->setPath("path"); $track->setOnlyAudio(true); $mmobj = new MultimediaObject(); $mmobj->addTrack($track); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGA')); $this->assertEquals(array('audio'), $jobs); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGC')); $this->assertEquals(array('audio', 'audio2'), $jobs); $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGB')); $this->assertEquals(array('audio2'), $jobs); //generate a video2 from an audio has no sense. $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGP')); $this->assertEquals(array(), $jobs); //generate a video from an audio has no sense. $jobs = $this->invokeMethod($this->jobGeneratorListener, 'generateJobs', array($mmobj, 'TAGFP')); $this->assertEquals(array(), $jobs); //generate a video from an audio has no sense. }
public function importRecording($opencastId, $invert = false) { $mediaPackage = $this->opencastClient->getMediaPackage($opencastId); $seriesRepo = $this->dm->getRepository('PumukitSchemaBundle:Series'); if (isset($mediaPackage["series"])) { $series = $seriesRepo->findOneBy(array("properties.opencast" => $mediaPackage["series"])); } else { $series = $seriesRepo->findOneBy(array("properties.opencast" => "default")); } if (!$series) { $series = $this->importSeries($mediaPackage); } $multimediaobjectsRepo = $this->dm->getRepository('PumukitSchemaBundle:MultimediaObject'); $onemultimediaobjects = $multimediaobjectsRepo->findOneBy(array("properties.opencast" => $mediaPackage["id"])); if ($onemultimediaobjects == null) { $title = $mediaPackage["title"]; $properties = $mediaPackage["id"]; $recDate = $mediaPackage["start"]; $multimediaObject = $this->factoryService->createMultimediaObject($series); $multimediaObject->setSeries($series); $multimediaObject->setRecordDate($recDate); $multimediaObject->setProperty("opencast", $properties); $multimediaObject->setProperty("opencastinvert", boolval($invert)); $multimediaObject->setProperty("opencasturl", $this->opencastClient->getPlayerUrl() . "?id=" . $properties); $multimediaObject->setTitle($title); if (isset($mediaPackage["language"])) { $multimediaObject->setProperty("opencastlanguage", strtolower($mediaPackage["language"])); } else { $multimediaObject->setProperty("opencastlanguage", 'en'); } foreach ($this->otherLocales as $locale) { $multimediaObject->setTitle($title, $locale); } //Multiple tracks if (isset($mediaPackage["media"]["track"][0])) { for ($i = 0; $i < count($mediaPackage["media"]["track"]); $i++) { $tags = $mediaPackage["media"]["track"][$i]["tags"]; $url = $mediaPackage["media"]["track"][$i]["url"]; $mime = $mediaPackage["media"]["track"][$i]["mimetype"]; $duration = $mediaPackage["media"]["track"][$i]["duration"]; $track = new Track(); if (isset($mediapackage["media"]["track"][$i]["audio"])) { $acodec = $mediaPackage["media"]["track"][$i]["audio"]["encoder"]["type"]; $track->setAcodec($acodec); } if (isset($mediaPackage["language"])) { $track->setLanguage(strtolower($mediaPackage["language"])); } if (isset($mediaPackage["media"]["track"][$i]["video"])) { $vcodec = $mediaPackage["media"]["track"][$i]["video"]["encoder"]["type"]; $track->setVcodec($vcodec); $framerate = $mediaPackage["media"]["track"][$i]["video"]["framerate"]; $track->setFramerate($framerate); } if (!$track->getVcodec() && $track->getAcodec()) { $track->setOnlyAudio(true); } $track->addTag("opencast"); $track->addTag($mediaPackage["media"]["track"][$i]["type"]); $track->setUrl($url); $track->setPath($this->opencastService->getPath($url)); $track->setMimeType($mime); $track->setDuration($duration / 1000); $this->inspectionService->autocompleteTrack($track); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); } } else { $tags = $mediaPackage["media"]["track"]["tags"]; $url = $mediaPackage["media"]["track"]["url"]; $mime = $mediaPackage["media"]["track"]["mimetype"]; $duration = $mediaPackage["media"]["track"]["duration"]; $track = new Track(); if (isset($mediapackage["media"]["track"]["audio"])) { $acodec = $mediaPackage["media"]["track"]["audio"]["encoder"]["type"]; $track->setAcodec($acodec); } if (isset($mediaPackage["media"]["track"]["video"])) { $vcodec = $mediaPackage["media"]["track"]["video"]["encoder"]["type"]; $track->setVcodec($vcodec); $framerate = $mediaPackage["media"]["track"]["video"]["framerate"]; $track->setFramerate($framerate); } if (!$track->getVcodec() && $track->getAcodec()) { $track->setOnlyAudio(true); } $track->addTag("opencast"); $track->addTag($mediaPackage["media"]["track"]["type"]); $track->setUrl($url); $track->setPath($this->opencastService->getPath($url)); $track->setMimeType($mime); $track->setDuration($duration / 1000); $this->inspectionService->autocompleteTrack($track); $multimediaObject->setDuration($track->getDuration()); $multimediaObject->addTrack($track); } for ($j = 0; $j < count($mediaPackage["attachments"]["attachment"]); $j++) { if (isset($mediaPackage["attachments"]["attachment"][$j]["type"])) { if ($mediaPackage["attachments"]["attachment"][$j]["type"] == "presenter/search+preview") { $tags = $mediaPackage["attachments"]["attachment"][$j]["tags"]; $url = $mediaPackage["attachments"]["attachment"][$j]["url"]; $pic = new Pic(); $pic->setTags(array($tags)); $pic->setUrl($url); $multimediaObject->addPic($pic); } } } $tagRepo = $this->dm->getRepository('PumukitSchemaBundle:Tag'); $opencastTag = $tagRepo->findOneByCod('TECHOPENCAST'); if ($opencastTag) { $tagService = $this->tagService; $tagAdded = $tagService->addTagToMultimediaObject($multimediaObject, $opencastTag->getId()); } $this->dm->persist($multimediaObject); $this->dm->flush(); if ($track) { $opencastUrls = $this->getOpencastUrls($opencastId); $this->opencastService->genSbs($multimediaObject, $opencastUrls); } } }
public function testAutocompleteTrackWithAudioAndVideo() { $file1 = $this->resources_dir . "CAMERA.mp4"; $file2 = $this->resources_dir . "SCREEN.mp4"; $track1 = new Track(); $track2 = new Track(); $is = new InspectionMediainfoService(); $track1->setPath($file1); $track2->setPath($file2); $is->autocompleteTrack($track1); $is->autocompleteTrack($track2); $mime_type1 = 'video/mp4'; $bitrate1 = 4300000; $duration1 = '2'; $size1 = '551784'; $vcodec1 = 'AVC'; $framerate1 = '25.000'; // Also works with $framerate = '25'; $width1 = '960'; $height1 = '720'; $acodec1 = 'AAC'; // Test general properties $this->assertEquals($mime_type1, $track1->getMimetype()); $this->assertTrue($track1->getBitrate() > $bitrate1); $this->assertEquals($duration1, $track1->getDuration()); $this->assertEquals($size1, $track1->getSize()); // Test video properties $this->assertEquals($vcodec1, $track1->getVcodec()); $this->assertEquals($framerate1, $track1->getFramerate()); $this->assertEquals($width1, $track1->getWidth()); $this->assertEquals($height1, $track1->getHeight()); // Test audio properties $this->assertFalse($track1->getOnlyAudio()); $this->assertEquals($acodec1, $track1->getAcodec()); $mime_type2 = 'video/mp4'; $bitrate2 = 847600; $duration2 = 2; $size2 = 116545; $vcodec2 = 'AVC'; $framerate2 = '9.091'; // Also works with $framerate = '25'; $width2 = 1200; $height2 = 900; $acodec2 = 'AAC'; // Test general properties $this->assertEquals($mime_type2, $track2->getMimetype()); $this->assertEquals($bitrate2, $track2->getBitrate()); $this->assertEquals($duration2, $track2->getDuration()); $this->assertEquals($size2, $track2->getSize()); // Test video properties $this->assertEquals($vcodec2, $track2->getVcodec()); $this->assertEquals($framerate2, $track2->getFramerate()); $this->assertEquals($width2, $track2->getWidth()); $this->assertEquals($height2, $track2->getHeight()); // Test audio properties $this->assertFalse($track2->getOnlyAudio()); $this->assertEquals($acodec2, $track2->getAcodec()); }