In some cases (for example, a problem with copyright holders), we must clear the DVR in the stream, but we must not restart it, because at this moment some event may be streamed and recorded.
So I’ve done that:
public void clearDVR(String streamName, long timeShiftSeconds){
IDvrStreamManager manager = this.appInstance.getStreams().getStream(streamName).getDvrRecorder(“dvrrecorder”).getDvrManager();
// Dirty hack there. We use only one version
IDvrStreamStore store = manager.getStreamStore(stream.getName()+".0");
IDvrManifest paramIDvrManifest = store.getManifest();
DvrChannelManifest manifest = paramIDvrManifest.getManifestChannel(IVHost.CONTENTTYPE_VIDEO);
if (manifest == null) {
manifest = paramIDvrManifest.getManifestChannel(IVHost.CONTENTTYPE_AUDIO); // for audio-only streams
if (manifest == null) {
return;
}
}
long currentTime = manifest.getDvrTime();
DvrManifestEntryRangeGroup fragmentsToPurge = new DvrManifestEntryRangeGroup();
DvrManifestEntryRange entryRange = manifest.getLiveRangeEndingBeforeTime(currentTime - timeShiftSeconds*1000);
if (entryRange != null && !entryRange.isEmpty()){
fragmentsToPurge.addRange(entryRange);
}
// Dirty hack there. We use only one version
manager.purgeManifestEntries(stream.getName()+".0", fragmentsToPurge);
}