2010-09-16 13 views
0

Est-ce que quelqu'un connaît une méthode conviniente pour capturer une vidéo dans un fichier ou un flux à partir de l'application OpenGL sur un appareil Android? Par exemple, pouvons-nous capturer de la vidéo à partir d'une vue, opengl view?Capture vidéo Android OpenGL

Je viens de découvrir ce qui suit: 1) Nous pouvons obtenir des cadres en utilisant glReadPixels. (Pas de vidéo sur cette étape?) 2) MediaRecorder peut encoder de la vidéo, mais comment pouvons-nous lui fournir notre source brute, si possible? 3) Tout port de travail de ffmpeg (par exemple) ou d'autres bibliothèques de codage? Il y a quelques tutoriels de portng ffmpeg à utiliser avec NDK. Donc, ayant des cadres bruts et le port de travail de ffmeg, nous pouvons créer de la vidéo? Des problèmes sur cette étape? Quelqu'un a réussi à porter une bibliothèque d'encodage avec succès? De quels composants ai-je besoin de ffpmeg?

Les formats prédéfinis sont mp4 ou flv. Appareils cibles> 2.1. NDK n'est pas un problème

Répondre

-1

Pas une réponse facile à vos questions, mais voici quelques conseils pour au moins vous aider à aller dans la bonne direction.

Pour capturer des images vidéo (vue non glissante), par exemple à partir d'un MediaPlayer générique, vous avez besoin d'un support matériel et, par conséquent, d'un pilote de périphérique. De nos jours, la plupart des fournisseurs de matériel fournissent des accélérateurs h/w dans leurs puces, comme un DSP, afin d'accélérer les cas d'utilisation de la vidéo et de la caméra. En plus de cela, il y a la prise en charge de l'espace utilisateur (Media Framework et applications) pour vous permettre d'accéder au pilote de périphérique, donc un cadre multimédia serait votre meilleur choix pour réaliser la capture vidéo. Je recommanderais d'étudier quelques-uns des projets en open source tels que gst-plugins dans Android (http://gitorious.org/rowboat/external-gst-plugins-android/trees/master), qui vous donneront certainement une idée de la façon dont les choses s'empilent. Pour le cas de gl-view, vous aurez besoin d'une sorte de support de texture Streaming dans le pilote GL. À l'heure actuelle, il n'existe aucun moyen standard de le faire (c'est-à-dire que les pilotes actuels peuvent le prendre en charge via une extension propriétaire). L'utilisation de glReadPixels pour capturer des images n'est pas très efficace car il y a un flush impliqué et cela affectera votre fréquence d'images.