Streaming vidéo de la caméra Android vers le serveur

286

J'ai vu beaucoup d'informations sur la façon de diffuser des vidéos du serveur vers un appareil Android, mais pas grand-chose d'autre, ala Qik. Quelqu'un pourrait-il m'orienter dans la bonne direction ici, ou me donner des conseils sur la façon d'aborder cela?

JCL
la source
9
J'aimerais aussi voir une réponse à cela. Avez-vous déjà trouvé quelque chose?
Jeremy White
Non, j'ai abandonné le streaming. Le simple fait de battre l'API MediaRecorder en soumission a été assez difficile. Vous pouvez cependant vérifier le code sipdroid, ils semblent l'avoir fait fonctionner.
JCL
Le code vidéo n'est pas dans la source Sipdroid en ligne cependant :(
Donal Rafferty
1
Vous pouvez regarder dans ffserver un composant dans ffmpeg.
Vinay
1
J'ai une question liée à celle-ci qui pourrait également vous intéresser. Il s'agit de pousser le flux vidéo sur 3g une fois la capture vidéo et la partie conteneur terminées. bit.ly/vYpWGy
michael

Réponses:

123

J'ai hébergé un projet open-source pour activer le téléphone Android sur la caméra IP:

http://code.google.com/p/ipcamera-for-android

Les données vidéo brutes sont récupérées à partir de LocalSocket et le MDAT MOOV de MP4 a été vérifié avant le streaming. La vidéo en direct est emballée au format FLV et peut être lue via un lecteur vidéo Flash avec un serveur Web intégré :)

Zhou Chang
la source
26
Cliquez sur le bouton "Source". En outre, celui qui a voté contre ce type est un outil.
Nicholi
3
Cela me donne des erreurs .. comme, java.lang.UnsatisfiedLinkError: Impossible de charger teaonly: findLibrary a retourné null .. Si quelqu'un a une solution, alors partagez-la. Merci
anddev
1
@mpp: l'application a du code NDK. Vous pouvez le compiler vous-même, ou récupérer les fichiers .so de l'apk qui se trouve dans ce projet Google Code sous "Téléchargements".
Turnsole
1
Je reçois également une erreur java.lang.UnsatisfiedLinkError. Veuillez mentionner brièvement les étapes pour supprimer cette erreur.
1
Pour ceux qui ne comprennent pas le UnsatisfiedLinkError: vous devez construire le code C avec le NDK. Autrement dit, courez ndk-build. Pour plus d'informations, lisez la documentation NDK .
Paul Lammertsma
70

Cela m'a pris un peu de temps, mais j'ai finalement réussi à créer une application qui fait exactement cela. Consultez la page de codes Google si vous êtes intéressé: http://code.google.com/p/spydroid-ipcamera/ J'ai ajouté des tas de commentaires dans mon code (principalement, regardez CameraStreamer.java), donc ça devrait être assez explicite. La partie difficile était en fait de comprendre le RFC 3984 et de mettre en œuvre un algorithme approprié pour le processus de mise en paquets. (Cet algorithme transforme en fait le flux mpeg4 / h.264 produit par le MediaRecorder en un joli flux rtp, selon le rfc)

Au revoir

Simon
la source
2
Merci beaucoup! Actuellement, je ne peux pas le faire fonctionner correctement avec h264 .. et je ne peux pas le changer en h263 (je n'ai aucune idée de comment le faire). de toute façon, merci mec!
Yotes
1
J'utilise le même mais quand il s'agit de diffuser sur Android avec rtsp, il est dit que la vidéo ne peut pas être lue. J'utilise VideoView. Peux-tu aider s'il te plait?
Rohit Mandiwal
1
Fonctionne très bien (jusqu'à présent!) Je l'utilise pour diffuser des vidéos à partir de Glass (après un peu de travail / modification / détermination), mais jusqu'à présent, je ne peux l'obtenir que pour se connecter à partir d'un navigateur Windows (Chrome) avec le plugin vlc. VLC sur Android / iPad ou tout autre lecteur rtsp ne captera pas le flux (l'un d'eux avait l'air bien, mais essayait d'obtenir un flux basé sur le nom de l'appareil, que ce code a renvoyé comme 0 et donc introuvable). Pourtant, obtenir des résultats après une journée de codage grâce à vous, alors bravo!
MacD
@MacD Utilisez-vous le code spydroid-ipcamera (tout le projet ou seulement certaines classes? Pouvez-vous me le dire?) Ou cette bibliothèque github.com/fyhertz/libstreaming pour le streaming dans Google Glass? Merci beaucoup!!
Bae
Salut, pourriez-vous expliquer comment implémenter ce projet dans un studio Android, je ne peux pas le faire fonctionner
utdev
24

J'examine également cela, et même si je n'ai pas de bonne solution pour vous, j'ai réussi à trouver le code vidéo de SIPDroid:

http://code.google.com/p/sipdroid/source/browse/trunk/src/org/sipdroid/sipua/ui/VideoCamera.java

ObsidianX
la source
Ce qu'ils ont fait là-bas, c'est qu'ils diffusent en utilisant des paquets RTP sur un serveur. Maintenant, la question est de savoir ce qui se fait sur le serveur? qu'est-ce que le trans-codage et comment est-il diffusé
Azlam
Non .. Je n'ai pas opté pour l'approche SIPDroid, c'était trop complexe .. J'ai ensuite fait quelque chose avec un MJPEGServer
Azlam
19

J'ai construit un SDK open source appelé Kickflip pour faire du streaming vidéo depuis Android une expérience indolore.

Le SDK montre l'utilisation de l' API MediaCodec d'Android 4.3 pour diriger les paquets de l'encodeur matériel de l'appareil directement vers FFmpeg pour RTMP (avec librtmp) ou le streaming HLS de H.264 / AAC. Il montre également les effets OpenGL en temps réel (titrage, incrustation en chrominance, fondus) et l'enregistrement en arrière-plan.

Merci donc, et surtout, fadden .

dbro
la source
peut-il être diffusé sur n'importe quel client compatible HLS (pas uniquement sur votre serveur)?
4ntoine
4
@dbro J'essaie d'en savoir plus sur votre service, mais vous avez besoin de mes informations de connexion avant de pouvoir voir vos prix. C'est comme si vous collectiez des adresses e-mail. Si ce n'est pas votre intention, vous devez rendre les informations de tarification disponibles: de la même manière que Parse et App Engine et bien d'autres.
apprenant
Est-il possible pour une caméra vidéo d'envoyer une vidéo à Kickflip puis elle va sur un téléphone Android? Si es quel type de caméra vidéo convient à cela
Lutaaya Huzaifah Idris
11

Voici un article complet sur le streaming de vidéos de caméras Android sur une page Web.

Android Streaming Live Camera Video to Web Page

  1. Libstreaming utilisé sur l'application Android
  2. Côté serveur, Wowza Media Engine est utilisé pour décoder le flux vidéo
  3. Enfin jWplayer est utilisé pour lire la vidéo sur une page Web.
Serviteur
la source
Cela utilise des composants de source fermée. Des alternatives open source?
Raj
Vous pouvez utiliser JavaCV pour cela Je l'ai utilisé dans mon projet pour faire du streaming en direct d'un appareil Android vers un serveur multimédia wowza.Vous pouvez également utiliser github.com/begeekmyfriend/yasea
Chinthaka Devinda
les bibliothèques sont-elles gratuites?
Akrramo
pouvons-nous utiliser un périphérique de carte son comme source audio d'entrée et non un micro dans la diffusion en continu.
user2980181
5

Je peux envoyer la vidéo de la caméra en direct du mobile à mon serveur. En utilisant ce lien voir le lien

Reportez-vous au lien ci-dessus. Il y a un exemple d'application dans ce lien. Il vous suffit de définir votre URL de service dans RecordActivity.class.

Exemple: ffmpeg_link = "rtmp: // yourserveripaddress: 1935 / live / venkat";

nous pouvons envoyer des vidéos de type H263 et H264 en utilisant ce lien.

Venkat
la source
J'ai utilisé le code en utilisant le lien ci-dessus, mais je n'ai même pas pu commencer l'enregistrement. obtenir une exception "Aucune vidéo à diffuser". Avez-vous une idée à ce sujet?
Akhilesh Sk
@AkhileshSk en utilisant le code ci-dessus, vous pouvez envoyer la vidéo en direct via l'URL rtmp à votre serveur. ce n'est pas à des fins d'enregistrement. si vous voulez enregistrer la vidéo, vous devez l'enregistrer côté serveur.
Venkat
Hey @ Venkat est-il possible d'envoyer une vidéo en direct d'un appareil photo vers un téléphone Android, avez-vous des liens de code, comme utiliser Youtube en direct, etc.
Lutaaya Huzaifah Idris
@LutaayaHuzaifahIdris oui c'est possible. J'ai déjà travaillé dessus.
Venkat
Salut @Venkat pouvez-vous m'aider avec cela, impossible de trouver le fichier
RecordActivity.class
1

Consultez la bibliothèque Yasea

Yasea est un client de streaming Android. Il code les données YUV et PCM de la caméra et du microphone en H.264 / AAC, encapsule en FLV et transmet via RTMP.

Fonctionnalité:

  1. Mini API Android 16.
  2. Codage dur H.264 / AAC.
  3. Codage logiciel H.264.
  4. Streaming RTMP avec gestionnaire de rappel d'état.
  5. Orientation dynamique portrait et paysage.
  6. Interrupteur à chaud des caméras avant et arrière.
  7. Enregistrement sur MP4 pendant la diffusion.
Hamed Ghadirian
la source
0

Mux (mon entreprise) a une application Android open source qui diffuse RTMP sur un serveur, y compris la configuration de la caméra et les interactions utilisateur. Il est conçu pour diffuser vers l'API de streaming en direct de Mux, mais peut facilement diffuser vers n'importe quel point d'entrée RTMP.

heff
la source
-7

Selon votre budget, vous pouvez utiliser un appareil photo Raspberry Pi qui peut envoyer des images à un serveur. J'ajoute ici deux tutoriels où vous pouvez trouver beaucoup plus de détails:

Ce tutoriel vous montre comment utiliser un appareil photo Raspberry Pi et afficher des images sur un appareil Android

Ceci est le deuxième tutoriel où vous pouvez trouver une série de tutoriels sur le streaming vidéo en temps réel entre la caméra et l'appareil Android

Ezu
la source
hors du contexte
Vikas Kandari