Search in sources :

Example 81 with Track

use of org.opencastproject.mediapackage.Track in project opencast by opencast.

the class AudioElementSelector method select.

/**
 * Returns a track or a number of tracks from the media package that together contain audio and video. If no such
 * combination can be found, e. g. there is no audio or video at all, an empty array is returned.
 *
 * @see org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#select(org.opencastproject.mediapackage.MediaPackage, boolean)
 */
@Override
public Collection<Track> select(MediaPackage mediaPackage, boolean withTagsAndFlavors) {
    // instead of relying on the broken superclass, we'll inspect every track
    // Collection<Track> candidates = super.select(mediaPackage);
    Collection<Track> candidates = Arrays.asList(mediaPackage.getTracks());
    Set<Track> result = new HashSet<Track>();
    boolean foundAudio = false;
    // Look for a track containing audio
    for (Track t : candidates) {
        if (TrackSupport.byType(t.getStreams(), AudioStream.class).length > 0) {
            if (!foundAudio && (audioFlavor == null || audioFlavor.equals(t.getFlavor()))) {
                result.add(t);
                foundAudio = true;
            }
        }
    }
    return result;
}
Also used : Track(org.opencastproject.mediapackage.Track) HashSet(java.util.HashSet)

Example 82 with Track

use of org.opencastproject.mediapackage.Track in project opencast by opencast.

the class StreamElementSelector method select.

/**
 * Returns all tracks from a <code>MediaPackage</code> that contain at least a <code>Stream</code> of the parametrized
 * type while optionally matching other requirements such as flavors and tags. If no such combination can be found, i.
 * g. there is no audio or video at all, an empty array is returned.
 *
 * @see org.opencastproject.mediapackage.selector.AbstractMediaPackageElementSelector#select(org.opencastproject.mediapackage.MediaPackage, boolean)
 */
@SuppressWarnings("unchecked")
@Override
public Collection<Track> select(MediaPackage mediaPackage, boolean withTagsAndFlavors) {
    Collection<Track> candidates = super.select(mediaPackage, withTagsAndFlavors);
    List<Track> result = new ArrayList<Track>();
    for (Track t : candidates) {
        if (TrackSupport.byType(t.getStreams(), getParametrizedStreamType()).length > 0) {
            result.add(t);
        }
    }
    return result;
}
Also used : ArrayList(java.util.ArrayList) Track(org.opencastproject.mediapackage.Track)

Example 83 with Track

use of org.opencastproject.mediapackage.Track in project opencast by opencast.

the class LiveScheduleServiceImplTest method testIsSameMediaPackageFalse.

@Test
public void testIsSameMediaPackageFalse() throws Exception {
    URI mpURI = LiveScheduleServiceImplTest.class.getResource("/assetmanager-mp.xml").toURI();
    MediaPackage mp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder().loadFromXml(mpURI.toURL().openStream());
    setUpAssetManager(mp);
    replayServices();
    MediaPackage mp1 = (MediaPackage) service.getSnapshot(MP_ID).getMediaPackage().clone();
    mp1.setDuration(DURATION);
    service.addLiveTracks(mp1, CAPTURE_AGENT_NAME);
    MediaPackage mp2 = (MediaPackage) service.getSnapshot(MP_ID).getMediaPackage().clone();
    mp2.setDuration(DURATION);
    service.addLiveTracks(mp2, CAPTURE_AGENT_NAME);
    // Change title
    String previous = mp2.getTitle();
    mp2.setTitle("Changed");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.setTitle(previous);
    // Change language
    previous = mp2.getLanguage();
    mp2.setLanguage("Changed");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.setLanguage(previous);
    // Change series
    previous = mp2.getSeries();
    mp2.setSeries("Changed");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.setSeries(previous);
    // Change series title
    previous = mp2.getSeriesTitle();
    mp2.setSeriesTitle("Changed");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.setSeriesTitle(previous);
    // Change date
    Date dt = mp2.getDate();
    mp2.setDate(new Date());
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.setDate(dt);
    // Change creators
    mp2.addCreator("New object");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.removeCreator("New object");
    // Change contributors
    mp2.addContributor("New object");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.removeContributor("New object");
    // Change subjects
    mp2.addSubject("New object");
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.removeSubject("New object");
    // Change track uri
    Track track = mp2.getTracks()[0];
    URI previousURI = track.getURI();
    track.setURI(new URI("http://new.url.com"));
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    track.setURI(previousURI);
    // Change duration
    long duration = mp2.getDuration();
    for (Track t : mp2.getTracks()) {
        ((TrackImpl) t).setDuration(1L);
    }
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    for (Track t : mp2.getTracks()) {
        ((TrackImpl) t).setDuration(duration);
    }
    // Change number of tracks
    track = (Track) mp2.getTracks()[0].clone();
    mp2.remove(track);
    Assert.assertFalse(service.isSameMediaPackage(mp1, mp2));
    mp2.add(track);
}
Also used : TrackImpl(org.opencastproject.mediapackage.track.TrackImpl) MediaPackage(org.opencastproject.mediapackage.MediaPackage) URI(java.net.URI) Date(java.util.Date) Track(org.opencastproject.mediapackage.Track) Test(org.junit.Test)

Example 84 with Track

use of org.opencastproject.mediapackage.Track in project opencast by opencast.

the class MediaInspectionServiceImplTest method testEnrichment.

@Test
public void testEnrichment() throws Exception {
    final URI trackUri = getResource("/test.mp4");
    for (MediaInspector mi : init(trackUri)) {
        Track track = mi.inspectTrack(trackUri, Options.NO_OPTION);
        // make changes to metadata
        Checksum cs = track.getChecksum();
        track.setChecksum(null);
        MimeType mt = mimeType("video", "flash");
        track.setMimeType(mt);
        // test the enrich scenario
        Track newTrack = (Track) mi.enrich(track, false, Options.NO_OPTION);
        VideoStream[] videoStreams = TrackSupport.byType(newTrack.getStreams(), VideoStream.class);
        assertTrue(videoStreams[0].getFrameCount().longValue() > 0);
        AudioStream[] audioStreams = TrackSupport.byType(newTrack.getStreams(), AudioStream.class);
        assertTrue(audioStreams[0].getFrameCount().longValue() > 0);
        assertEquals(newTrack.getChecksum(), cs);
        assertEquals(newTrack.getMimeType(), mt);
        assertNotNull(newTrack.getDuration());
        assertTrue(newTrack.getDuration() > 0);
        // test the override scenario
        newTrack = (Track) mi.enrich(track, true, Options.NO_OPTION);
        assertEquals(newTrack.getChecksum(), cs);
        assertNotSame(newTrack.getMimeType(), mt);
        assertTrue(newTrack.getDuration() > 0);
    }
    for (MediaInspector mi : init(trackUri)) {
        Track track = mi.inspectTrack(trackUri, Options.NO_OPTION);
        // make changes to metadata
        Checksum cs = track.getChecksum();
        track.setChecksum(null);
        MimeType mt = mimeType("video", "flash");
        track.setMimeType(mt);
        // test the enrich scenario
        Track newTrack = (Track) mi.enrich(track, false, Options.NO_OPTION);
        VideoStream[] videoStreams = TrackSupport.byType(newTrack.getStreams(), VideoStream.class);
        assertTrue(videoStreams[0].getFrameCount().longValue() > 0);
        AudioStream[] audioStreams = TrackSupport.byType(newTrack.getStreams(), AudioStream.class);
        assertTrue(audioStreams[0].getFrameCount().longValue() > 0);
        assertEquals(newTrack.getChecksum(), cs);
        assertEquals(newTrack.getMimeType(), mt);
        assertNotNull(newTrack.getDuration());
        assertTrue(newTrack.getDuration() > 0);
        // test the override scenario
        newTrack = (Track) mi.enrich(track, true, Options.NO_OPTION);
        assertEquals(newTrack.getChecksum(), cs);
        assertNotSame(newTrack.getMimeType(), mt);
        assertTrue(newTrack.getDuration() > 0);
    }
}
Also used : AudioStream(org.opencastproject.mediapackage.AudioStream) Checksum(org.opencastproject.util.Checksum) VideoStream(org.opencastproject.mediapackage.VideoStream) URI(java.net.URI) Track(org.opencastproject.mediapackage.Track) MimeType(org.opencastproject.util.MimeType) Test(org.junit.Test)

Example 85 with Track

use of org.opencastproject.mediapackage.Track in project opencast by opencast.

the class MediaInspectionServiceImplTest method testInspectionEmptyContainer.

@Test
public void testInspectionEmptyContainer() throws Exception {
    final URI trackUri = getResource("/nostreams.mp4");
    for (MediaInspector mi : init(trackUri)) {
        final Track track = mi.inspectTrack(trackUri, Options.NO_OPTION);
        assertEquals(0, track.getStreams().length);
        assertEquals("mp4", track.getMimeType().getSubtype());
        assertEquals(null, track.getDuration());
    }
}
Also used : URI(java.net.URI) Track(org.opencastproject.mediapackage.Track) Test(org.junit.Test)

Aggregations

Track (org.opencastproject.mediapackage.Track)154 Test (org.junit.Test)56 Job (org.opencastproject.job.api.Job)56 MediaPackage (org.opencastproject.mediapackage.MediaPackage)50 URI (java.net.URI)40 MediaPackageElementFlavor (org.opencastproject.mediapackage.MediaPackageElementFlavor)34 WorkflowOperationException (org.opencastproject.workflow.api.WorkflowOperationException)34 WorkflowOperationResult (org.opencastproject.workflow.api.WorkflowOperationResult)34 HashMap (java.util.HashMap)29 ArrayList (java.util.ArrayList)27 MediaPackageException (org.opencastproject.mediapackage.MediaPackageException)24 MediaPackageElement (org.opencastproject.mediapackage.MediaPackageElement)21 TrackImpl (org.opencastproject.mediapackage.track.TrackImpl)20 NotFoundException (org.opencastproject.util.NotFoundException)20 IOException (java.io.IOException)19 TrackSelector (org.opencastproject.mediapackage.selector.TrackSelector)17 Attachment (org.opencastproject.mediapackage.Attachment)16 EncodingProfile (org.opencastproject.composer.api.EncodingProfile)15 Catalog (org.opencastproject.mediapackage.Catalog)15 File (java.io.File)14