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]);
}
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;
}
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;
}
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;
}
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());
}
Aggregations