web-dev-qa-db-fra.com

Convertir le flux d'entrée vidéo en RTMP

Je souhaite diffuser un enregistrement vidéo de mon Android sur le serveur multimédia réseau).

Le premier problème est que lors de la définition de la sortie MediaRecorder sur socket, il manque certains en-têtes de taille mdat. Cela peut être résolu en prétraitant ce flux localement et en ajoutant des données manquantes au flux afin de produire un flux de sortie valide.

La question est de savoir comment procéder à partir de là.

Comment puis-je effectuer la sortie de ce flux en tant que flux RTMP?

36
Marko

Tout d'abord, déroulons votre question. Comme vous l'avez supposé, RTMP n'est actuellement pas pris en charge par Android. Vous pouvez utiliser un quelques bibliothèques latérales pour ajouter la prise en charge, mais celles-ci peuvent ne pas être des implémentations complètes ou avoir d'autres effets secondaires et bogues indésirables qui les empêchent de répondre à vos besoins.

L'alternative courante dans ce cas est d'utiliser RTSP . Il fournit un format de session comparable qui a son propre RFC , et sa structure de paquets lorsqu'il est combiné avec RTP est très similaire (sans quelques détails) à votre protocole souhaité. Vous pourrait effectuer les corrections nécessaires ici pour transmuter RTP/RTSP en RTMP, mais comme mentionné, un tel effort est actuellement en dehors du domaine de développement de votre application.

Supposons donc que vous souhaitez utiliser RTMP ( invalider ce fil ) et que la bibliothèque liée ci-dessus ne répond pas à vos besoins.

Vous pouvez, par exemple, suivre ce tutoriel pour l'enregistrement et la lecture à l'aide de Livu, Wowza et Adobe Flash Player, parler avec le (s) développeur (s) Liv à propos de la licence de leur client. Ou, vous pouvez utiliser cette bibliothèque client et sa pleine exemple d'enregistreur Android pour construire votre client.

Résumer:

RTSP

RTMP

Bonne chance avec votre candidature. J'avoue que j'ai une compréhension loin d'être complète de toutes ces bibliothèques, mais celles-ci semblent être les solutions standard dans cet espace au moment de la rédaction de cet article.

Éditer:

Selon l'OP, parcourir l'ensemble de bibliothèques RTMP:

En bref: plus de travail est nécessaire. D'autres réponses et améliorations de ces exemples sont nécessaires ici.

49
MrGomez

Si vous utilisez un navigateur Web sur Android, vous pouvez utiliser WebRTC pour la capture vidéo et l'enregistrement côté serveur, c'est-à-dire avec Web Call Server 4

Ainsi, le chemin complet serait:

Android Chrome [WebRTC]> WCS4> enregistrement

Vous n'avez donc pas besoin du protocole RTMP ici.

Si vous utilisez une application RTMP autonome, vous pouvez utiliser n'importe quel serveur RTMP pour l'enregistrement vidéo. Comme je sais, Wowza prend en charge l'enregistrement H.264 + Speex.

1
eeKat88