Live Camera Previews in Android
salut les drodiens
je voulais savoir si il y'a quelqu'un parmi vous qui a essayer d'afficher le flux vidéo de la webcam sur l’émulateur Android !
je ne trouve qu'une seule solution sur le net
( http://www.tomgibara.com/android/camera-source ) , et ça ne marche pas pour moi.
pouvez vous m'aider SVP.merci :cry:
Tuto webcam sous android !!!
désolé pour le temps de réponse donc voila :
Pour l'utiliser, comme tu le sais déjà il te faut JMF car la classe WebcamBroadcaster en a besoin
Tu peux le télécharger ici :
http://www.oracle.com/technetwork/ja...ad-142937.html
Ensuite, comme tu as pu le voir il y a pas mal de classe , comme HttpCamera , socketCamera ou encore guinineCemra en fait c'est différentes façon pour obtenir le flux vidéo.
Mais moi j'ai choisi la classe socketCamera.
En gros pour t'expliquer la class webcambroadcaster met en marche la
webcam et diffuse le flux video compressé sur ton réseau, le
programme android sous eclipse,donc ton objet SocketCamera lui va créer un socket sur le reseau et
obtenir le flux, décompresser pour obtenir une bitmap et par une
boucle simuler le flux vidéo, d'où le fait que ce soit un peu lent...Bref
Voici les manipulations à faire :
Une fois que tu auras télécharger JMF, il faut que tu place ta classe
WebcamBroadcaster dans un fichier quelconque... Il n'y a pas de modification à faire sur cette classe.
C'est pour que les commande du jdk soit reconnu par le système sinon
"javac" et "java" sa ne marchera pas
Ensuite une fois ceci réalisé tu va compiler ta class
WebcamBroadcaster :
ouvre l'invite de commande et va dans le dossier ou est ta classe :
ensuite tape "javac WebcamBroadcaster.java"
une fois que c'est compilé et que tu a obtenu un .class
tape "java WebcamBroadcaster" et tu verra le petit voyant de ta webcam
s'allumer t'indiquant qu'elle est allumé :)
Ensuite sous eclipse mets dans un même package les classes CameraSource et SocketCamera.
Après il faut que tu crée une classe par exemple FluxVideo qui hérite de la classe ImageView en gros grâce à celle ci tu va pour simuler un flux vidéo en créant une boucle qui vas redessiner tout le temps la vue :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public class FluxVideo extends ImageView
{
private SocketCamera camera = new SocketCamera("10.4.222.146", 9889, 320, 240, false); //"192.168.1.89"
public FluxVideo(Context context)
{
super(context);
}
protected void onDraw(Canvas canvas)
{
cam = camera.capture(canvas);
invalidate();
} |
Pour toi il va juste devoir que tu change lorsque tu instancie l'objet camera, l'adresse IP, met la tienne. ;)
La méthode onDraw() appelle la méthode capture de notre camera qui crée une image obtenue depuis la décompression du flux sur le réseau, et la méthode invalidate() va rappeler tout le temps la méthode onDraw() , donc la vue se redessine tout le temps et on simule donc un flux video :mrgreen:
Il ne reste plus à indiquer dans la classe principale que c'est cette vue que tu veux :
Code:
1 2 3 4 5 6 7 8 9
|
public FluxVideo video = null;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState) ;
video = new FluxVideo(this);
setContentView(video);
} |
Lance l'émulateur et normalement tu te verra dedans !!!!!!:D
Bon évidement cette solution n'est vraiment pas optimisé, c'est assez lent et lorsque que tu veux faire du traitement dessus sa rame encore plus..:?*
Mais bon c'est parfait en attendant d'obtenir un beau samsung galaxy lol
Si il y a un seul souci dis le moi!