Search in sources :

Example 6 with Track

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

the class TagWorkflowOperationHandlerTest method testAllTagsFlavors.

@Test
public void testAllTagsFlavors() throws Exception {
    WorkflowInstanceImpl instance = new WorkflowInstanceImpl();
    List<WorkflowOperationInstance> ops = new ArrayList<WorkflowOperationInstance>();
    WorkflowOperationInstanceImpl operation = new WorkflowOperationInstanceImpl("test", OperationState.INSTANTIATED);
    ops.add(operation);
    instance.setOperations(ops);
    instance.setMediaPackage(mp);
    operation.setConfiguration(TagWorkflowOperationHandler.SOURCE_FLAVORS_PROPERTY, "presenter/source");
    operation.setConfiguration(TagWorkflowOperationHandler.TARGET_FLAVOR_PROPERTY, "presenter/test");
    operation.setConfiguration(TagWorkflowOperationHandler.TARGET_TAGS_PROPERTY, "tag1,tag2");
    operation.setConfiguration(TagWorkflowOperationHandler.COPY_PROPERTY, "false");
    WorkflowOperationResult result = operationHandler.start(instance, null);
    MediaPackage resultingMediapackage = result.getMediaPackage();
    Track track = resultingMediapackage.getTrack("track-2");
    Assert.assertEquals("presenter/test", track.getFlavor().toString());
    Assert.assertEquals("tag1", track.getTags()[0]);
    Assert.assertEquals("tag2", track.getTags()[1]);
    instance = new WorkflowInstanceImpl();
    ops = new ArrayList<WorkflowOperationInstance>();
    operation = new WorkflowOperationInstanceImpl("test", OperationState.INSTANTIATED);
    ops.add(operation);
    instance.setOperations(ops);
    instance.setMediaPackage(resultingMediapackage);
    operation.setConfiguration(TagWorkflowOperationHandler.SOURCE_TAGS_PROPERTY, "tag1");
    operation.setConfiguration(TagWorkflowOperationHandler.TARGET_FLAVOR_PROPERTY, "presenter/source");
    operation.setConfiguration(TagWorkflowOperationHandler.TARGET_TAGS_PROPERTY, "-tag1,+tag3");
    operation.setConfiguration(TagWorkflowOperationHandler.COPY_PROPERTY, "false");
    result = operationHandler.start(instance, null);
    resultingMediapackage = result.getMediaPackage();
    track = resultingMediapackage.getTrack("track-2");
    Assert.assertEquals("presenter/source", track.getFlavor().toString());
    Assert.assertEquals("tag2", track.getTags()[0]);
    Assert.assertEquals("tag3", track.getTags()[1]);
}
Also used : WorkflowInstanceImpl(org.opencastproject.workflow.api.WorkflowInstanceImpl) WorkflowOperationInstance(org.opencastproject.workflow.api.WorkflowOperationInstance) ArrayList(java.util.ArrayList) MediaPackage(org.opencastproject.mediapackage.MediaPackage) WorkflowOperationInstanceImpl(org.opencastproject.workflow.api.WorkflowOperationInstanceImpl) WorkflowOperationResult(org.opencastproject.workflow.api.WorkflowOperationResult) Track(org.opencastproject.mediapackage.Track) Test(org.junit.Test)

Example 7 with Track

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

the class TrackBuilderPlugin method newElement.

/**
 * @see org.opencastproject.mediapackage.elementbuilder.MediaPackageElementBuilderPlugin#newElement(org.opencastproject.mediapackage.MediaPackageElement.Type
 *      ,org.opencastproject.mediapackage.MediaPackageElementFlavor)
 */
@Override
public MediaPackageElement newElement(MediaPackageElement.Type type, MediaPackageElementFlavor flavor) {
    Track track = new TrackImpl();
    track.setFlavor(flavor);
    return track;
}
Also used : TrackImpl(org.opencastproject.mediapackage.track.TrackImpl) Track(org.opencastproject.mediapackage.Track)

Example 8 with Track

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

the class TrackBuilderPlugin method elementFromURI.

/**
 * @see org.opencastproject.mediapackage.elementbuilder.MediaPackageElementBuilderPlugin#elementFromURI(URI)
 */
@Override
public MediaPackageElement elementFromURI(URI uri) throws UnsupportedElementException {
    logger.trace("Creating track from " + uri);
    Track track = TrackImpl.fromURI(uri);
    return track;
}
Also used : Track(org.opencastproject.mediapackage.Track)

Example 9 with Track

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

the class VideoElementSelector method select.

/**
 * Returns a track or a number of tracks from the media package that together contain video and video. If no such
 * combination can be found, e. g. there is no video 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 foundVideo = false;
    // Look for a track containing video
    for (Track t : candidates) {
        if (TrackSupport.byType(t.getStreams(), VideoStream.class).length > 0) {
            if (!foundVideo && (videoFlavor == null || videoFlavor.equals(t.getFlavor()))) {
                result.add(t);
                foundVideo = true;
            }
        }
    }
    return result;
}
Also used : Track(org.opencastproject.mediapackage.Track) HashSet(java.util.HashSet)

Example 10 with Track

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

the class TrackTest method testLiveMarshalling.

@Test
public void testLiveMarshalling() throws Exception {
    track.setFlavor(MediaPackageElements.PRESENTATION_SOURCE);
    track.setLive(true);
    JAXBContext context = JAXBContext.newInstance("org.opencastproject.mediapackage:org.opencastproject.mediapackage.track", MediaPackage.class.getClassLoader());
    Marshaller marshaller = context.createMarshaller();
    StringWriter writer = new StringWriter();
    marshaller.marshal(track, writer);
    Unmarshaller unmarshaller = context.createUnmarshaller();
    InputStream inputStream = IOUtils.toInputStream(writer.toString(), "UTF-8");
    try {
        TrackImpl t1 = unmarshaller.unmarshal(new StreamSource(inputStream), TrackImpl.class).getValue();
        Assert.assertEquals(MediaPackageElements.PRESENTATION_SOURCE, t1.getFlavor());
        Assert.assertEquals(true, t1.isLive());
    } finally {
        IoSupport.closeQuietly(inputStream);
    }
    // Now again without namespaces
    String xml = "<oc:track xmlns:oc=\"http://mediapackage.opencastproject.org\" type=\"presentation/source\"><oc:tags/><oc:url>http://downloads.opencastproject.org/media/movie.m4v</oc:url><oc:duration>-1</oc:duration><oc:live>true</oc:live></oc:track>";
    inputStream = IOUtils.toInputStream(xml);
    try {
        TrackImpl t2 = unmarshaller.unmarshal(new StreamSource(inputStream), TrackImpl.class).getValue();
        Assert.assertEquals(MediaPackageElements.PRESENTATION_SOURCE, t2.getFlavor());
        Assert.assertEquals("http://downloads.opencastproject.org/media/movie.m4v", t2.getURI().toString());
        Assert.assertEquals(true, t2.isLive());
    } finally {
        IoSupport.closeQuietly(inputStream);
    }
    // Get the xml from the object itself
    String xmlFromTrack = MediaPackageElementParser.getAsXml(track);
    Assert.assertTrue(xmlFromTrack.contains(MediaPackageElements.PRESENTATION_SOURCE.toString()));
    Assert.assertTrue(xmlFromTrack.replaceAll("\\b+", "").contains("<live>true</live>"));
    // And finally, using the element builder
    DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
    Document doc = docBuilder.parse(IOUtils.toInputStream(xml));
    Track t3 = (Track) MediaPackageElementBuilderFactory.newInstance().newElementBuilder().elementFromManifest(doc.getDocumentElement(), new DefaultMediaPackageSerializerImpl());
    Assert.assertEquals(MediaPackageElements.PRESENTATION_SOURCE, t3.getFlavor());
    Assert.assertEquals("http://downloads.opencastproject.org/media/movie.m4v", t3.getURI().toURL().toExternalForm());
    Assert.assertEquals(true, t3.isLive());
}
Also used : Marshaller(javax.xml.bind.Marshaller) InputStream(java.io.InputStream) StreamSource(javax.xml.transform.stream.StreamSource) JAXBContext(javax.xml.bind.JAXBContext) Document(org.w3c.dom.Document) DefaultMediaPackageSerializerImpl(org.opencastproject.mediapackage.DefaultMediaPackageSerializerImpl) StringWriter(java.io.StringWriter) DocumentBuilder(javax.xml.parsers.DocumentBuilder) MediaPackage(org.opencastproject.mediapackage.MediaPackage) Unmarshaller(javax.xml.bind.Unmarshaller) 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