web-dev-qa-db-fra.com

Streaming de vidéos Youtube

Je suis en train d'écrire une application pour lire des vidéos youtube en streaming.

Première méthode:

Je reçois l'URL RTSP de la vidéo à l'aide des API GData . Voici le code pour lire l'URL RTSP.

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

Mais il génère une erreur à la fois sur le périphérique G1 et sur l’émulateur (Emulator a un problème de pare-feu Selon la liste de diffusion) Voici le message d’erreur

ERROR/PlayerDriver (35): La commande PLAYER_INIT s'est terminée avec une erreur ouinfo PVMFFailure

Deuxième méthode:

Une méthode simple pour obtenir le chemin du fichier 3gp à partir de http://www.youtube.com/get_video?v= & t = <> & <> .. Après avoir obtenu le chemin du fichier et Je peux appeler setVideoURI et le jeu se passe Bien. Mais c’est un moyen astucieux d’atteindre l’exigence . J’ai également vérifié l’application Youtube, elle permet également de jouer de façon astucieuse L’URL youtube. (Vérifié avec logcat)

J'ai essayé de passer de VideoView à MediaPlayer, mais l'erreur n'a pas changé.

Existe-t-il un moyen "propre" de procéder?

S'il vous plaît laissez-moi savoir vos pensées.

28
Vinay

Parfois, Uri.parse renvoie "null" car il est impossible d'analyser un protocole rtsp au lieu d'un protocole http. 

Regardez-le avec un Log in Uri.parse(rtspURL).toString() Logcat et vous ne verrez rien écrit. ou seulement faire Log.d("tag", Uri.parse); et le même sera de retour.

Essayez de trouver un autre moyen d’analyser (créer) un Uri.

J'essayerais avec ça et lancerais:

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

Je suis impressionné que le sale chemin fonctionne du tout! Si vous avez une solution de travail, allez-y. Je ne pense pas qu'il existe un moyen propre de faire fonctionner la diffusion RTSP dans le SDK pour le moment.

1
haseman

nous avons rencontré un problème très similaire.

En ce moment, j’en suis à la première étape de mon projet et j’essaie de faire en sorte que la vidéo soit tout simplement opérationnelle… .. Je prends des données à partir d’ici: http://gdata.youtube.com/demo/ et je teste tous les liens de vidéos.

Les vidéos RTSP 3GP sont vraiment de très basse qualité .... et il n’ya aucun moyen d’accéder aux vidéos mp4 (de bonne qualité). Je ne sais vraiment pas comment le faire fonctionner, car je pense que les flux MP4 ne sont disponibles que pour les développeurs premium ...

1
StErMi

Jeter un oeil sur Youtube API

Je pense que cela utilise également l'application youtube (dont vous ne voulez pas)

Mais il suffit de se référer peut-être que vous trouverez une clé pour le résoudre

1
edwin

avez-vous accès à Internet? sinon, veuillez ajouter l'autorisation Internet au fichier manifeste

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

et aussi s'il vous plaît essayez ces URI:

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

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

L'en-tête de la vidéo indique que cela fonctionne pour Android. Alors, essayez un bon lien vidéo à expérimenter. En voici un que j'utilise:

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

Je travaille très bien sur les tablettes Nexus et Samsung.

0
Droid Chris

J'ai affiché des vidéos YouTube avec le code suivant. J'espère que c'est utile, mais laissez-moi savoir comment cela pourrait être amélioré.

@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