# VideoStream von Webseite lesen/speichern



## Jedit (7. Mrz 2011)

Hi!

Ich hab vor kurzem wieder mit Java begonnen. Bisher hab ich noch keine Erfahrung mit Netzwerkprogrammierung (bisher nur Clientanwendungen für Datenbanken gemacht).

Folgendes möchte ich machen:
Dem Programm eine URL übergeben, wenn auf der Website ein Video gestreamt wird, möchte ich den Stream erkennen um das Video zu speichern oder es eventuell im Programm ausgeben zu können.

Bisher kann ich lediglich den Quelltext einer Webseite auslesen und speichern. Das mach ich mit Xuggler über eine URLConnection. Ich hab mir auch den Source Code von JDownloader runtergeladen, aber das ist mir zu umfangreich, so versteh ich das nur extrem bedingt.

Suchen würde ich nun ein kompaktes Einstiegstutorial in dem Bereich in dem erklährt wird, wie ich den Videostream anspreche. Auf Grund meiner fehlenden Erfahrung in der Netzwerkprogrammierung, weiß ich leider auch nicht wonach ich suchen soll.

Wär nice wenn mir jemand weiterhelfen könnte.

lg


----------



## Kr0e (7. Mrz 2011)

Hmm, du willst ne Website nach einem Videostream durchsuchen ? klingt nicht trivial... Ich bezweifele auch dass es eine standard-Lösung gibt. Ist bestimmt abhängig von der Website selbst. 

Genaugenommen hat das aber nix mit Netzwerkprorgammierung zu tun... 

Achja noch was: Um ein Objekt, dass über eine URL angesprochen werden kann, herunterzuladen, reicht die Klasse URL von Java direkt vollkommen aus. Dafür brauchst du kein Xuggler. Xuggler wäre interessant, wenn du diesen Stream (wenn du ihn dann doch iwie findest auf der Website) auch direkt mit deinem Programm wiedergeben willst. Soweit ich weiß, ist es bei Youtube z.B. total schwer an die URL heranzukommen, wohinter sich dann die FLV Videos verbergen. 

Gruß,
Chris


----------



## Jedit (7. Mrz 2011)

Danke für deine schnelle Antwort. Bin da heute am Schluss schon etwas durcheinander gekommen mit den Klassen und dann auch mit dem Forum, hätte wohl besser in den Multimediabereich(?) gepasst. Xuggler hab ich was gefunden zur Videowiedergabe und da dacht ich mir, ja klar warum ned, und habs gleich mitgenommen^^.

Als erstes Ziel hab ich mir jetzt wirklich vorgenommen ein Video von YouTube über ein Java Programm runterzuladen. Ist denk ich eine passende Ausgangslage, da es dort ja genügend Videos zum Testen gibt.

Mein Ziel zu erreichen wird mir hald nur möglich sein, wenn ich irgendwo Informationen finde wie ich überhaupt mal damit anfangen kann. Ich weiß ja nichtmal wonach ich wirklich suchen soll. Die paar Ideen die ich hatte, hab ich ausgeschöpft und bei den anderen Einfällen bekomm ich nur Suchergebnisse für andere Bereiche die ich nicht finden will.

Edit1: Wenn das derzeit wirklich noch etwas zu schwer für mich sein sollte, würde ich mich alternativ zuvor noch mit jMonkeyEngine beschäftigen oder nen kleinen primitiven chat versuchen ... ich bin derzeit nur ganz gribbelig  Hab länger nichts mit Java gemacht (so 2-3 Monate), jetzt wieder Blut geleckt und voller Tatendrang, will nur unbedingt einen neuen Bereich ausprobieren.


----------



## areafo (8. Mrz 2011)

myCSharp.de - DIE C# und .NET Community | Projekte | Youtube Videos: Links auslesen

sollte weiterhelfen falls du das mit youtube noch verfolgst ^^


----------



## Jedit (8. Mrz 2011)

Danke, das sieht schonmal sehr interessant aus. Mit C# hab ich zwar noch nie was gemacht, aber ist Java ja zum Glück sehr ähnlich.

Den Part mit Links rauslesen und decodieren versteh ich zumindest mal. Werd mir das zu Hause noch genauer ansehen. Danke

lg


----------



## Kr0e (8. Mrz 2011)

Wow, dieser Link sieht wirklich hilfreich aus! Direkt mal ausprobieren!


----------



## Jedit (8. Mrz 2011)

Ok ich konnt nicht warten bis ich zu Hause bin  Danke sehr nochmal für eure Hilfe. :applaus:

Mittlerweile funktioniert es bei mir. Also ich kann die Links rauslesen, trennen und die Dateien herunterladen, anschließend natürlich auch mit einem passenden Player wiedergeben. (Hab hir nur die .flv dateien mit dem FLV Player getestet, die mp4 müssen aber auch funktionieren).

Jetzt kann ich mich beruhigt auf das Ganze rund herum konzentrieren  (Die Threads dazu programmieren, die GUI, etc)

lg


----------



## Kr0e (8. Mrz 2011)

Hi, ja habs auch hingebekommen. War recht eifnach, dachte immer das wäre sehr viel schwerer!

Hier der Code für alle, die es interessiert:


```
public static void main(String[] args) throws Throwable {
        if(args.length < 1) {
            System.out.println("Youtube Link aneben!");
            System.out.println("Bsp.: java -jar YoutubeURLExtractor -link.to.youtube.video");
            System.exit(0);
        }

        URL url = new URL(args[0]);

        InputStream stream = url.openStream();

        ByteArrayOutputStream output = new ByteArrayOutputStream(32 * 1024);

        int read;

        while ((read = stream.read()) != -1) {
            output.write(read);
        }

        stream.close();

        //To byte array
        String code = new String(output.toByteArray());

        String search = "\"fmt_url_map\": ";

        int index = code.indexOf(search) + search.length();

        int nextSignIndex = code.indexOf("\"", index);
        int lastSignIndex = code.indexOf("\"", nextSignIndex + 1);

        String codedURL = code.substring(nextSignIndex + 1, lastSignIndex);
        codedURL = codedURL.replace("\\", "");
        String[] splitted = codedURL.split(",");

        URL[] urls = new URL[splitted.length];
        int i = 0;
        for (String s : splitted) {
            String[] tmp = s.split("\\|");

            System.out.println(tmp[1]);

            urls[i++] = new URL(tmp[1]);
        }
}
```

Gruß,

Chris

PS: Wäre meiner Meinung nach, was für die FAQ...


----------

