L'affichage en direct UDP ou les flux RTP (multidiffusion) sur Android

Je suis nouveau sur le développement Android depuis quelques semaines, et j'ai besoin d'écrire une application qui permet d'afficher à l'utilisateur un flux en direct multicasted en UDP ou RDP. Le flux est situé à une adresse du type "rtp://230.0.0.11:1234", et est émis par WIFI grâce à ce module :
http://www.ikusi.es/public/ctrl_public_prod.php?accion=verProducto&id_familia=34&id_gama=186&id_producto=351

J'ai déjà essayé de le lire à partir d'un lecteur (Daroon player, de PlayStore), et il a bien fonctionné, donc je suppose que mon foolowing problème n'est pas dû à la diffusion.

J'ai vu qu'il est possible d'afficher du contenu vidéo à l'utilisateur de différentes manières :

  • À l'aide d'une nouvelle Intention avec un ACTION_VIEW, et Android sélectionne une application qui permet de visualiser le contenu;

  • À l'aide de la classe de MediaPlayer et VideoView.

J'ai deux questions, nous allons commencer par le plus important :
- Pour les deux solutions ci-dessus, il y a un problème : j'ai lu partout que MediaPlayer seulement de support http/s et protocoles rtsp, est ce que le droit? Et pour l'action en vue ici est ce que j'ai essayé avant :

    Uri streamURL = Uri.parse("rtp://230.0.0.11:1234");
    Intent streamIntent = new Intent(Intent.ACTION_VIEW);
    streamIntent.setData(streamURL);
// streamIntent.setDataAndType(streamURL,"video/*");   
    startActivity(streamIntent);

Voici le LogCat :

07-11 00:25:58.119: D/AndroidRuntime(2659): Shutting down VM
07-11 00:25:58.119: W/dalvikvm(2659): threadid=1: thread exiting with uncaught exception (group=0x40015560)
07-11 00:25:58.129: E/AndroidRuntime(2659): FATAL EXCEPTION: main
07-11 00:25:58.129: E/AndroidRuntime(2659): java.lang.IllegalStateException: Could not execute method of the activity
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$1.onClick(View.java:2144)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View.performClick(View.java:2485)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$PerformClick.run(View.java:9080)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Handler.handleCallback(Handler.java:587)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.os.Looper.loop(Looper.java:123)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.ActivityThread.main(ActivityThread.java:3683)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invoke(Method.java:507)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at dalvik.system.NativeStart.main(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659): Caused by: java.lang.reflect.InvocationTargetException
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at java.lang.reflect.Method.invoke(Method.java:507)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.view.View$1.onClick(View.java:2139)
07-11 00:25:58.129: E/AndroidRuntime(2659):     ... 11 more
07-11 00:25:58.129: E/AndroidRuntime(2659): Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=rtp://230.0.0.11:1234 }
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Activity.startActivityForResult(Activity.java:2827)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at android.app.Activity.startActivity(Activity.java:2933)
07-11 00:25:58.129: E/AndroidRuntime(2659):     at fr.infosat.tvreplay.MainActivity.listStream(MainActivity.java:35)
07-11 00:25:58.129: E/AndroidRuntime(2659):     ... 14 more
07-11 00:26:00.079: I/Process(2659): Sending signal. PID: 2659 SIG: 9

Ma compréhension est que l'erreur InvocationTargetException, généralement en raison de l'erreur sur les noms de classe, ne peut pas être résolu directement ici, car je n'appelle pas n'importe quelle classe de startActivity. Cependant, je pense que ma syntaxe n'est pas correcte, peut-être que la méthode n'est pas la bonne à utiliser. Bien sûr, si je décommentez la setDataAndType ligne, il affiche le même message d'erreur.

J'ai remarqué l'erreur de venir quand je lance mon intention implicite.

  • Mon deuxième problème est que Daroon Player fonctionne bien sur mon décodeur, je peux voir mon stream sur ma TV. Mais quand j'essaie de le lancer à partir de l'Éclipse de l'émulateur, il ne joue pas, même si je peux jouer à partir de VLC... Est l'émulateur assez puissant pour lire ce genre de stream?

J'espère que vous avez quelques indices sur la façon de résoudre ce! 🙂

Salut, à la recherche de très de base multicast UDP/RTP joueur. Je peux payer pour votre service.

OriginalL'auteur Thibault | 2012-07-12