Conversion flux D'entrée vidéo en RTMP
je veux diffuser l'enregistrement vidéo de mon téléphone android au serveur de médias réseau.
le premier problème est que lors du réglage de la sortie MediaRecorder
sur socket, le flux manque quelques en-têtes de taille mdat
. Ceci peut être corrigé en prétraitement ce flux localement et en ajoutant les données manquantes au flux afin de produire un flux de sortie valide.
La question est de savoir comment procéder à partir de là.
sortie de ce flux comme un flux RTMP?
2 réponses
d'abord, défaisons ta question. Comme vous l'avez supposé, RTMP n'est pas actuellement pris en charge par Android. Vous pouvez utiliser un quelques bibliothèques secondaires pour ajouter du support, mais celles-ci peuvent ne pas être des implémentations complètes ou avoir d'autres effets secondaires indésirables et des bogues qui les rendent incapables de répondre à vos besoins.
l'alternative courante dans ce cas est d'utiliser RTSP . Il fournit un format de session comparable que a son propre RFC , et sa structure de paquet lorsqu'elle est combinée avec RTP est très similaire (sans quelques détails) à votre protocole désiré. Vous pouvez effectuer les corrections nécessaires ici pour transmuter RTP/RTSP en RTMP, mais comme mentionné, un tel effort est actuellement en dehors du champ de développement de votre application.
donc, supposons que vous voulez utiliser RTMP ( invalider ce fil ) et que au-dessus de la bibliothèque de liens ne pas répondre à vos besoins.
vous pouvez, par exemple, suivre ce tutoriel pour l'enregistrement et la lecture en utilisant Livu, Wowza, et Adobe Flash Player, parler avec le développeur de Livu au sujet de la licence de leur client. Ou, vous pouvez utiliser cette bibliothèque client et sa pleine enregistreur Android exemple pour construire votre client.
pour résumer:
RTSP
- Ce fil , à l'aide de Darwin Media Server , Windows Media Services , ou VLC
RTMP
- Cette bibliothèque ,
- ce fil et ce tutoriel , en utilisant Livu , Wowza , et Adobe Flash Player
- Cette bibliothèque client et cet exemple enregistreur
bonne chance avec votre application. Je reconnais que j'ai une compréhension moins que complète de toutes ces bibliothèques, mais celles-ci semblent être la norme solutions dans cet espace au moment de la rédaction.
Edit:
selon L'OP, en marchant dans la bibliothèque RTMP set:
- cette bibliothèque : il ne pouvait pas faire fonctionner la bibliothèque démos. Plus important encore, la fonctionnalité de RTMP est incomplète.
- ce fil et ce tutoriel , en utilisant Livu , Wowza , et Adobe Flash Player : ce tutoriel est long sur la façon de consommer la vidéo, mais son tutoriel sur la publication est potentiellement terne et insuffisant.
- Cette bibliothèque client et cet exemple enregistreur : L'exemple donné ne couvre audio de la publication. Plus de travail est nécessaire pour faire ce complet.
En bref: plus de travail est nécessaire. D'autres réponses, et des améliorations sur ces exemples, sont ce qui est nécessaire ici.
si vous utilisez un navigateur Web sur un appareil Android, vous pouvez utiliser WebRTC pour la capture vidéo et l'enregistrement côté serveur, I. e avec serveur D'appels web 4
ainsi le chemin complet serait:
Android Chrome [WebRTC] > WCS4 > enregistrement
donc vous n'avez 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 l'ai know Wowza supporte L'enregistrement H. 264+Speex.