From 46c2db310a635d934027955a324b9bd08a8991ad Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 30 Jan 2016 00:22:16 +0100 Subject: [PATCH] add suport for dash --- .../org/schabi/newpipe/crawler/VideoExtractor.java | 5 +++++ .../java/org/schabi/newpipe/crawler/VideoInfo.java | 8 +++++++- .../services/youtube/YoutubeVideoExtractor.java | 13 +++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/crawler/VideoExtractor.java b/app/src/main/java/org/schabi/newpipe/crawler/VideoExtractor.java index ee7977ee0..14a4a15ba 100644 --- a/app/src/main/java/org/schabi/newpipe/crawler/VideoExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/crawler/VideoExtractor.java @@ -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(); } diff --git a/app/src/main/java/org/schabi/newpipe/crawler/VideoInfo.java b/app/src/main/java/org/schabi/newpipe/crawler/VideoInfo.java index 068b3ce26..7bf077886 100644 --- a/app/src/main/java/org/schabi/newpipe/crawler/VideoInfo.java +++ b/app/src/main/java/org/schabi/newpipe/crawler/VideoInfo.java @@ -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 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() {} diff --git a/app/src/main/java/org/schabi/newpipe/crawler/services/youtube/YoutubeVideoExtractor.java b/app/src/main/java/org/schabi/newpipe/crawler/services/youtube/YoutubeVideoExtractor.java index b0ecd1e4f..436dbce90 100644 --- a/app/src/main/java/org/schabi/newpipe/crawler/services/youtube/YoutubeVideoExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/crawler/services/youtube/YoutubeVideoExtractor.java @@ -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) {