2011-08-08 5 views
5

Je construis une application qui va contenir un tampon de 60 secondes de vidéo enregistrée. L'enregistrement vidéo doit durer longtemps (24 à 48 heures). Je ne semble pas avoir de problèmes avec l'enregistrement, mais il semble que je perds la connexion avec mon Camera ou Surface après quelques heures de temps.Enregistrement vidéo sans fin

Je règle la durée maximale: MediaRecorder.setMaxDuration(10 * 1000) afin que l'enregistrement soit décomposé en segments de 10 secondes.

Chaque fois que je relance mon enregistrement, j'augmente le fichier de sortie de telle sorte que 6 fichiers soient réutilisés. Le but est de garder une histoire de 60 secondes en tout temps.

Si j'arrête l'enregistrement après 1 à 2 heures, les vidéos sont lues correctement. Cependant, si je le laisse fonctionner pendant 3-4 + heures et que j'arrête l'enregistrement, les vidéos ne montrent que la sortie noire avec l'audio. En d'autres termes, c'est comme si elle a perdu une connexion avec l'appareil photo ou la surface mais a continué l'enregistrement audio.

Quelqu'un peut-il expliquer ce comportement?

Si rien d'autre, est-il un meilleur moyen d'enregistrer X deuxièmes segments de vidéo?

FYI: J'utilise un verrouillage de réveil pour que l'écran/l'UC restent allumés.

+0

Je n'ai jamais rien essayé de tel. Mais si vous pouvez obtenir 1-2 heures sans problème, une solution rapide et sale ressemble à finish() et redémarre votre activité d'enregistrement. Mais cela va vous laisser une lacune dans la vidéo enregistrée qui est la taille de votre temps de démarrage de l'activité. Si vous avez 2 appareils, vous pouvez enregistrer à partir des deux temps de redémarrage? – FoamyGuy

+0

Hmm, idée intéressante. En réalité, je crois que je pourrais faire quelque chose dans le désordre avec les opérations d'enregistrement. Comme dans, il pourrait * normalement * être capable de se reconnecter à la caméra, mais il pourrait y avoir 1% de cas où il devance lui-même (MediaRecorder n'a pas fini d'écrire/fermer le fichier de sortie quand j'essaie de recommencer l'enregistrement) –

Répondre

2

J'ai un peu répondu à ma propre question ici. Je n'ai pas beaucoup d'informations, mais j'espère que cela fournira suffisamment d'informations pour aider les autres dans une situation similaire. D'abord, je n'ai jamais posté mon code parce que c'est manière trop long. Je n'ai pas publié d'extraits de mon code parce que je ne savais pas d'où venait le problème. Malgré le fait que je travaille maintenant, je ne sais toujours pas ce qui n'allait pas avec mon ancien code.

Ma suggestion:

J'ai fini mon code et la casse à partir frais avec le code trouvé dans l'API de développement Demos: CameraPreview - Je trouve cette référence dans au moins un fil sur ce site. Après cela, j'ai pu enregistrer continuellement pendant des heures sans problème. Donc, si vous êtes dans une situation similaire, je suggère d'utiliser le code CameraPreview comme point de départ.

+0

Salut, j'essaie de faire quelque chose de similaire mais avec de plus petites longueurs (record 15-30 secondes de vidéo + audio) mais j'ai du mal à le faire fonctionner. Pouvez-vous me dire quel est le niveau d'API minimum de votre projet? En outre, si vous pouvez fournir plus d'informations à ce sujet, ce serait génial, comme si vous utilisiez d'autres bibliothèques externes, quels objets/méthodes vous utilisez, comment fusionnez-vous les vidéos résultantes (ou si c'est fait automatiquement)? . Merci – klifa