web-dev-qa-db-fra.com

Transférez le flux vidéo en temps réel vers le serveur en utilisant Android

Nous devons capturer la vidéo en temps réel en utilisant Android Camera, et les envoyer au serveur, puis les autres utilisateurs les liraient via le navigateur ou autre chose.

J'ai googlé et cherché sur SO, et il y a quelques exemples sur l'application de flux vidéo comme:

1 œil Android: https://github.com/Teaonly/Android-eye

2 Spydroid-ipcamera: https://code.google.com/p/spydroid-ipcamera/

Cependant, il semble qu'ils aient des environnements différents, la plupart des applications démarreront un serveur HTTP pour les demandes de flux, puis le client visitera la page via le réseau local et verra la vidéo.

Ensuite, la source du flux vidéo et le serveur sont tous deux l'appareil comme ceci: enter image description here

Mais nous avons besoin du support Internet comme celui-ci: enter image description here

Je me demande donc s'il y a des idées alternatives.

30
hguser

Je peux voir que vous avez correctement conçu les trois étapes, dans votre deuxième diagramme.

Il vous faut donc déterminer comment choisir parmi ces protocoles et comment les interfacer. Personne ne peut vous donner une solution complète, mais après avoir terminé un projet d'entreprise sur Android Streaming vidéo, je vais essayer de redresser votre vue vers votre objectif.

enter image description here

Il y a trois parties dans votre photo, je vais élaborer de gauche à droite:

1. Android Streamer Device

D'après mon expérience, je peux dire Android envoie bien les flux de caméra via RTP, en raison de support natif , tandis que la conversion de votre vidéo en FLV vous donne des maux de tête. de nombreux cas, par exemple, si vous souhaitez plus tard diffuser le flux sur les appareils Android.)

Je suggère donc de construire sur quelque chose comme spyDroid .

2. Serveur de streaming

Il existe des outils comme Wowza Server qui peuvent obtenir un flux source et le mettre sur la sortie du serveur pour d'autres clients. Je suppose que VLC peut le faire aussi, via le menu Fichier -> Stream, puis en mettant l'adresse du flux vidéo RTSP à partir de votre application basée sur spyDroid. Mais je ne l'ai pas essayé personnellement.

De plus, il n'est pas difficile de mettre en œuvre votre propre serveur de streaming.

Je vais vous donner un exemple:

Pour l'implémentation d'un serveur HLS, vous avez juste besoin de trois choses:

  1. Fichiers vidéo, segmentés en morceaux de 10 secondes MPEG2. (c'est-à-dire les fichiers .ts)
  2. Une liste de lecture m3U8 des morceaux.
  3. Un serveur Web avec un WebService simple qui fournit la liste de lecture aux clients (PC, Android, iPhone, principalement tous les appareils) via HTTP. Les clients rechercheront ensuite le fichier de liste de lecture et demanderont les morceaux appropriés selon leur timing. Parce que presque tous les joueurs ont un support HLS intégré.

3. Côté client

Sur la base de nos commentaires, je suggère que vous souhaitiez approfondir Android Streaming vidéo.

Pour terminer un projet de cette envergure, vous avez besoin de beaucoup plus de recherches. Par exemple, vous devriez pouvoir distinguer RTP de RTSP et comprendre comment ils sont liés les uns aux autres.

Lisez ma réponse ici pour vous faire une idée du streaming vidéo de pointe et n'hésitez pas à en demander plus.

J'espère que vous avez une vue d'ensemble du voyage à venir,

Bonne chance et amusez-vous bien

35
Behnam

Une question assez générale, mais je vais essayer de vous donner une direction pour la recherche:

Tout d'abord, vous devrez répondre à plusieurs questions:

1) Quelle est la nature et le but d'un flux vidéo? S'agit-il d'une application de sécurité, où les détails dans les images fixes sont essentiels (alors vous devrez utiliser quelque chose comme le codec MJPEG) ou ils seront affichés uniquement en mouvement?

2) Les sources de flux, le serveur et les clients sont-ils sur le même réseau, de sorte que RTSP peut être utilisé pour un timing plus précis, ou WAN sera impliqué et quelque chose de plus stable comme HTTP devrait être utilisé?

3) Quel est le nombre de connexion de sortie simultanée? En d'autres termes, cela vaut-il la peine de payer pour quelque chose comme Wowza avec module complémentaire de transcodage (et peut-être aussi nDVR ) ou Flussonic , ou une solution simple comme ffserver suffira?

Pour faire court, pour une solution bon marché et sale pour quelques spectateurs, vous pouvez utiliser quelque chose comme Webcam IP -> ffserver -> VLC pour Android et évitez d'écrire votre propre logiciel.

3
David Jashi