Comment puis-je enregistrer un flux en direct avec Android Java?


En ce moment, j'affiche un flux en direct sur une Surface en utilisant le vitamio librairy.

Je souhaite l'enregistrer pour le regarder plus tard que l'alimentation provient d'un drone.

En ce moment, j'enregistre périodiquement une série de bitmaps en utilisant jcodec :

 SequenceEncoder enc = new SequenceEncoder(new File("filename"));
// GOP size will be supported in 0.2
// enc.getEncoder().setKeyInterval(25);
for(...) {
    BufferedImage image = ... // Obtain an image to encode
    enc.encodeImage(image);
}
enc.finish();

Mes problèmes sont :

  • La sortie h264 de jcodec est corrompue (il y a beaucoup de patchs de couleur sur les images)
  • Je ne peux pas enregistrer à un framerate très élevé (j'aimerais 30fps).

De plus, je dois encore trouver un moyen de le muxer.. J'ai regardé dans Mp4Parser sans beaucoup de succès.

Author: Jordi Castilla, 2016-01-11

1 answers

Pourquoi ne pas utiliser les données du flux d'entrée:

DataInputStream in = new DataInputStream (recording.getInputStream());
FileOutputStream videoFile = new FileOutputStream(targetFile);
int len;
byte buffer[] = new byte[8192];

while((len = in.read(buffer)) != -1) {
    videoFile.write(buffer, 0, len);
}

videoFile.close();

Ensuite, vous pouvez lire la vidéo à partir du fichier.

 0
Author: m.aibin, 2016-01-11 16:45:08