wake-up-neo.com

Streaming von Youtube-Videos

Ich schreibe eine Anwendung, um Youtube-Videos mittels Streaming abzuspielen.

Erste Methode:

Ich erhalte die RTSP-URL mit GData-APIs für das Video. Hier ist der Code zum Abspielen der RTSP-URL.

   VideoView mVideoView = new VideoView(this);
   setContentView(mVideoView);
   mVideoView.setVideoURI(Uri.parse("rtsp://rtsp2.youtube.com/CiILENy73wIaGQkDwpjrUxOWQBMYESARFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
   mVideoView.start();

Es gibt jedoch einen Fehler auf dem G1-Gerät und dem Emulator (Emulator hat ein Firewall-Problem gemäß Mailingliste.) Hier ist die Fehlermeldung

ERROR/PlayerDriver (35): Der Befehl PLAYER_INIT wurde mit einem Fehler oder Info PVMFFailure abgeschlossen

Zweite Methode:

Eine Hackweise, um den Pfad der 3GP-Datei von http://www.youtube.com/get_video?v= & t = <> & <> .. Abzurufen den Dateipfad und ich kann setVideoURI aufrufen und es spielt in Ordnung. Aber es ist eine Hackweise, um die Anforderung zu erreichen. Ich habe die Youtube-App auch geprüft, sie tut auch die Hackweise, um Die Youtube-URL zu spielen. (Mit logcat überprüft)

Ich habe versucht, von VideoView zu MediaPlayer zu wechseln, aber der Fehler wurde nicht geändert.

Gibt es eine "saubere" Möglichkeit, dies zu tun?

Bitte sag mir deine Gedanken.

28
Vinay

Wenn Sie bereit sind, die Arbeit in einer neuen Aktivität auszuführen, funktioniert Folgendes auf einem Gerät, jedoch nicht auf dem Emulator:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v=cxLG2wtE7TM")));

2
emmby

Manchmal gibt Uri.parse "null" zurück, weil ein rtsp-Protokoll nicht mit dem http-Protokoll analysiert werden kann. 

Schauen Sie es mit einem Log in logcat Uri.parse(rtspURL).toString() an und Sie werden nichts geschrieben sehen. oder nur Log.d("tag", Uri.parse); machen und dasselbe wird zurückgegeben.

Versuchen Sie, einen anderen Weg zu finden, um einen Uri zu analysieren.

Ich würde es versuchen und laufen:

String urlVideo = <your rtspURL>
VideoView video = (VideoView)findViewById(R.id.VideoView01);
Log.d(tag , urlVideo);
video.setVideoURI(Uri.parse(urlVideo));
MediaController mc = new MediaController(this);
video.setMediaController(mc);
video.requestFocus();
video.start();
mc.show();
2
XanXa

Ich bin beeindruckt, dass der schmutzige Weg überhaupt funktioniert! Wenn Sie eine funktionierende Lösung haben, fahren Sie damit fort. Ich glaube nicht, dass es eine saubere Möglichkeit gibt, RTSP-Streaming noch im SDK zum Laufen zu bringen.

1
haseman

wir hatten ein sehr ähnliches Problem.

Im Moment bin ich im ersten Schritt meines Projekts und versuche, das Video einfach funktionieren zu lassen. Ich nehme Daten von hier: http://gdata.youtube.com/ Demo/ und ich teste alle Videos-Links.

RTSP-3GP-Videos sind wirklich wirklich sehr schlechte Videoqualität .... und es gibt keine Möglichkeit, auf mp4-Videos (gute Qualität) zuzugreifen. Ich weiß wirklich nicht, wie es funktioniert, weil ich denke, dass MP4-Streams nur Premium-Entwicklern zur Verfügung stehen.

1
StErMi

Werfen Sie einen Blick auf Youtube API

Ich denke, dass dies auch eine YouTube-App ist (die du nicht willst)

Aber verweisen Sie sich vielleicht darauf, dass Sie einen Schlüssel finden, um es zu lösen

1
edwin

haben Sie Zugang zum Internet? Wenn nicht, fügen Sie der Manifestdatei die Internetberechtigung hinzu

 <uses-permission Android:name="Android.permission.INTERNET" />

und bitte auch diese URIs:

rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov

http://www.wowza.com/_h264/BigBuckBunny_175k.mov
0
Albert Chen

Der Header des Videos zeigt an, dass es für Android funktioniert. Probieren Sie also einen guten Videolink aus, um damit zu experimentieren. Hier ist eine, die ich benutze:

rtsp: //184.72.239.149/vod/mp4: BigBuckBunny_115k.mov

Ich arbeite gut mit Nexus- und Samsung-Tablets.

0
Droid Chris

Ich habe YouTube-Videos mit folgendem Code angezeigt. Ich hoffe es ist nützlich, aber lassen Sie mich wissen, wie es verbessert werden könnte.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startActivity(new Intent(Intent.ACTION_VIEW, 
                  Uri.parse("http://www.youtube.com/watch?v=...")));
}

public void onPrepared(MediaPlayer mp) {
     // TODO Auto-generated method stub
}
0
reaper