add suport for dash

This commit is contained in:
Christian Schabesberger 2016-01-30 00:22:16 +01:00
parent 9204a89319
commit 46c2db310a
3 changed files with 25 additions and 1 deletions

View File

@ -95,6 +95,10 @@ public abstract class VideoExtractor {
if (videoInfo.startPosition < 0) {
videoInfo.startPosition = getTimeStamp();
}
if(videoInfo.dashMpdUrl.isEmpty()) {
videoInfo.dashMpdUrl = getDashMpdUrl();
}
} else {
videoInfo.errorCode = getErrorCode();
videoInfo.errorMessage = getErrorMessage();
@ -125,4 +129,5 @@ public abstract class VideoExtractor {
public abstract String getUploaderThumbnailUrl();
public abstract VideoInfo.AudioStream[] getAudioStreams();
public abstract VideoInfo.VideoStream[] getVideoStreams();
public abstract String getDashMpdUrl();
}

View File

@ -38,6 +38,11 @@ public class VideoInfo extends AbstractVideoInfo {
public String description = "";
public VideoStream[] videoStreams = null;
public AudioStream[] audioStreams = null;
// video streams provided by the dash mpd do not need to be provided as VideoStream.
// Later on this will also aplly to audio streams. Since dash mpd is standarized,
// crawling such a file is not service dependent. Therefore getting audio only streams by yust
// providing the dash mpd fille will be possible in the future.
public String dashMpdUrl = "";
public int errorCode = NO_ERROR;
public String errorMessage = "";
public int duration = -1;
@ -50,7 +55,8 @@ public class VideoInfo extends AbstractVideoInfo {
public String average_rating = "";
public VideoPreviewInfo nextVideo = null;
public List<VideoPreviewInfo> relatedVideos = null;
public int startPosition = -1;//in seconds. some metadata is not passed using a VideoInfo object!
//in seconds. some metadata is not passed using a VideoInfo object!
public int startPosition = -1;
public VideoInfo() {}

View File

@ -220,10 +220,23 @@ public class YoutubeVideoExtractor extends VideoExtractor {
}
}
@Override
public String getDashMpdUrl() {
try {
return playerArgs.getString("dashmpd");
} catch(NullPointerException e) {
Log.e(TAG, "Could not find \"dashmpd\" upon the player args (maybe no dash manifest available).");
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
@Override
public VideoInfo.AudioStream[] getAudioStreams() {
try {
String dashManifest = playerArgs.getString("dashmpd");
Log.d(TAG, dashManifest);
return parseDashManifest(dashManifest, decryptionCode);
} catch (NullPointerException e) {