IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Décodage streaming vidéo


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut Décodage streaming vidéo
    Bonjour,

    J'utilise la caméra pour envoyer le flux vidéo vers un serveur. Cela ce fait avec le MediaRecorder dont la sortie est dirigé vers une socket.

    Mon problème ce situe au niveau du décodage. Je reçois les octets que je met dans un ByteArrayOutputStream et dont j'écris dans un fichier.


    Le fichier s'ouvre avec VLC et se lit. Mais je n'ai pas la vidéo.

    Que dois-utiliser ou faire pour décoder proprement le flux ?
    (Je peux fournir du code source si besoin...)

    Code du serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    			bytesRead = -1;
    			while((bytesRead = is.read(buffer))!=-1) {
    				baos.write(buffer, 0, bytesRead);
    				baos.writeTo(outputStream);
    			}

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonsoir,

    Quand tu dis que VLC lit le fichier, affiche-t-il la bonne durée ?
    Sinon plusieurs pistes :

    • Le format définie au niveau du MediaRecorder ( setOutputFormat(OutputFormat.THREE_GPP) par exemple) n'est peut-être pas supporté par VLC (Ça m'est déjà arrivé). Essaye de copier et lire la vidéo sur le téléphone pour voir.
    • Tu n'as pas fait de flush() sur la socket à la fin de l'enregistrement.
    • Tu n'as pas fait de close() sur ton fichier.

    Normalement le fait que tu gère l'enregistrement sur un serveur ne devrais pas faire de différence (mais je n'en suis pas certain). Tu peux toujours essayer de d'abord enregistrer la vidéo sur le téléphone et ensuite seulement de l'envoyer sur le serveur.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    Je fermes bien mes flux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedWriter;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.ServerSocket;
    import java.net.Socket;
     
     
    public class Serveur {
    	static final int port = 1234;
     
    	public static void main(String[] args)   {
    		ServerSocket s = null;
    		Socket soc = null;
     
    		BufferedInputStream is = null;
     
     
    		byte buffer[] =  new byte[4096];
    		int bytesRead;
    		String message;
    		BufferedOutputStream bufferedOutput = null;
    		ByteArrayOutputStream baos;
    		OutputStream outputStream = null;
     
     
    		try {
    			s = new ServerSocket(port);
    			soc = s.accept();
     
     
    			is = new BufferedInputStream(soc.getInputStream());
    			outputStream = new FileOutputStream("C:\\Users\\Admin\\workspaceAndroid\\ServerSocketPourCamera\\video.mp4");
    			baos = new ByteArrayOutputStream();
     
     
    			bytesRead = -1;
    			while((bytesRead = is.read(buffer))!=-1) {
    				baos.write(buffer, 0, bytesRead);
    				baos.writeTo(outputStream);
    			}
    		} catch (IOException ioe) {
    		} finally {
    			if(bufferedOutput != null) {
    				try {
    					bufferedOutput.flush();
    					bufferedOutput.close();
    				} catch(IOException e) {
     
    				}
    			}
    			if(outputStream!=null) {
    				try {
    					outputStream.flush();
    					outputStream.close();
    				} catch(IOException ioe) {
     
    				}
    			}
    			if(soc != null) {
    				try {
    					soc.close();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    }
    Je vais essayer d'enregistrer la vidéo dans un fichier et voir si vlc l'ouvre...

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    Alors si j'enregistre la vidéo d'abord sur le smartphone et que je l'envoie après au serveur, je peux lire le fichier.

    Par contre si j'envoie directement le flux vidéo vers le serveur, que j'enregistre le fichier : vlc ne veut l'ouvrir avec le message impossible de reconnaître le format du fichier d'entrée...

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2011
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    En fait, d'après l'article :

    http://www.mattakis.com/blog/kisg/20...he-file-system

    Je dois faire un post-traitement. Le problème c'est de savoir quel traitement ?

Discussions similaires

  1. [Forum] Script de streaming vidéo
    Par mejri dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 11/09/2007, 18h57
  2. Quel hébergeur choisir pour du Streaming Vidéo (PHP) ?
    Par wehtam dans le forum Hébergement
    Réponses: 6
    Dernier message: 28/08/2006, 16h16
  3. [FCS] Streaming Vidéo Flash sous Linux
    Par trattos dans le forum Flash
    Réponses: 3
    Dernier message: 26/10/2005, 11h52
  4. [JMF] Question Streaming vidéo
    Par zeno dans le forum Multimédia
    Réponses: 3
    Dernier message: 31/01/2005, 19h27
  5. Réponses: 3
    Dernier message: 29/04/2004, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo