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