示例#1
0
 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 testEmbedTracksInMultimediaObject()
 {
     $track1 = new Track();
     $track2 = new Track();
     $track3 = new Track();
     $this->dm->persist($track1);
     $this->dm->persist($track2);
     $this->dm->persist($track3);
     $mm = new MultimediaObject();
     $mm->addTrack($track1);
     $mm->addTrack($track2);
     $mm->addTrack($track3);
     $this->dm->persist($mm);
     $this->dm->flush();
     $this->assertEquals($track1, $this->repo->find($mm->getId())->getTrackById($track1->getId()));
     $this->assertEquals($track2, $this->repo->find($mm->getId())->getTrackById($track2->getId()));
     $this->assertEquals($track3, $this->repo->find($mm->getId())->getTrackById($track3->getId()));
     $this->assertNull($this->repo->find($mm->getId())->getTrackById(null));
     $mm->removeTrackById($track2->getId());
     $this->dm->persist($mm);
     $this->dm->flush();
     $tracksArray = array($track1, $track3);
     $this->assertEquals(count($tracksArray), count($this->repo->find($mm->getId())->getTracks()));
     $this->assertEquals($tracksArray, array_values($this->repo->find($mm->getId())->getTracks()->toArray()));
     $mm->upTrackById($track3->getId());
     $this->dm->persist($mm);
     $this->dm->flush();
     $tracksArray = array($track3, $track1);
     $this->assertEquals($tracksArray, array_values($this->repo->find($mm->getId())->getTracks()->toArray()));
     $mm->downTrackById($track3->getId());
     $this->dm->persist($mm);
     $this->dm->flush();
     $tracksArray = array($track1, $track3);
     $this->assertEquals($tracksArray, array_values($this->repo->find($mm->getId())->getTracks()->toArray()));
 }
 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.
 }
 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 testIsOnlyAudio()
 {
     $mm = new MultimediaObject();
     $t1 = new Track();
     $t1->setOnlyAudio(true);
     $t2 = new Track();
     $t2->setOnlyAudio(true);
     $t3 = new Track();
     $t3->setOnlyAudio(true);
     $t4 = new Track();
     $t4->setOnlyAudio(true);
     $t5 = new Track();
     $t5->setOnlyAudio(true);
     $mm->addTrack($t3);
     $mm->addTrack($t2);
     $mm->addTrack($t1);
     $mm->addTrack($t4);
     $mm->addTrack($t5);
     $this->assertTrue($mm->isOnlyAudio());
     $t5->setOnlyAudio(false);
     $this->assertFalse($mm->isOnlyAudio());
 }
 public function syncTrack(MultimediaObject $mmobj, $parsedTerena)
 {
     $url = $parsedTerena['track_url'];
     $urlParsed = parse_url($url);
     //TODO if track_url add a error.
     $urlExtension = isset($urlParsed['path']) ? pathinfo($urlParsed['path'], PATHINFO_EXTENSION) : null;
     $track = $mmobj->getTrackWithTag('geant_track');
     if (!isset($track)) {
         $track = new Track();
         $mmobj->addTrack($track);
     }
     $track->addTag('geant_track');
     $track->setLanguage($parsedTerena['language']);
     $track->setDuration($parsedTerena['duration']);
     $track->setVcodec($parsedTerena['track_format']);
     $track->setPath($url);
     $track->setUrl($url);
     $format = explode('/', $parsedTerena['track_format']);
     $formatType = isset($format[0]) ? $format[0] : null;
     $formatExtension = isset($format[1]) ? $format[1] : null;
     if ($formatType == 'video' && in_array($formatExtension, $this->VIDEO_EXTENSIONS) || in_array($urlExtension, $this->VIDEO_EXTENSIONS)) {
         $track->addTag('display');
         $track->setOnlyAudio(false);
         $mmobj->setProperty('redirect', false);
         $mmobj->setProperty('iframeable', false);
     } elseif ($formatType == 'audio' && in_array($formatExtension, $this->AUDIO_EXTENSIONS) || in_array($urlExtension, $this->AUDIO_EXTENSIONS)) {
         $track->addTag('display');
         $track->setOnlyAudio(true);
         $mmobj->setProperty('redirect', false);
         $mmobj->setProperty('iframeable', false);
     } else {
         //We try to create an embed Url. If we can't, it returns false and we'll redirect instead. (When other repositories provides more embedded urls we will change this)
         $embedUrl = $this->feedProcesser->getEmbedUrl($url);
         if ($embedUrl) {
             $mmobj->setProperty('opencast', true);
             //Workaround to prevent editing the Schema Filter for now.
             $mmobj->setProperty('iframeable', true);
             $mmobj->setProperty('redirect', false);
             $mmobj->setProperty('iframe_url', $embedUrl);
         } else {
             $mmobj->setProperty('opencast', true);
             //Workaround to prevent editing the Schema Filter for now.
             $mmobj->setProperty('redirect', true);
             $mmobj->setProperty('iframeable', false);
             $mmobj->setProperty('redirect_url', $url);
         }
     }
     $this->dm->persist($track);
     $track->addTag('geant_track');
 }