Diffusion en direct du contenu de tableau de bord avec mp4box
Je suis en train de live stream H. 264 contenu de HTML5 à l'aide du media source extensions de l'API.
La méthode suivante fonctionne assez bien:
ffmpeg -i rtsp://10.50.1.29/media/video1 -vcodec copy -f mp4 -reset_timestamps 1 -movflags frag_keyframe+empty_moov -loglevel quiet out.mp4
et puis:
mp4box -dash 1000 -frag 1000 -frag-rap out.mp4
Je peux prendre le MP4Box de sortie (out_dashinit.mp4
) et de l'envoyer à travers les Web Sockets, morceau par morceau, pour un client JavaScript qui l'alimente à la source de support de l'API.
Cependant, ce n'est pas une bonne méthode pour que le contenu.
Ce que je suis en train d'essayer de faire est de créer un seul pipeline pour le faire en temps réel et avec un minimum de latence.
Avec FFmpeg, il est possible de rediriger la sortie vers stdout
au lieu de out.mp4
et de saisir le contenu.
Je n'arrivais pas à savoir si il est possible de combiner MP4Box dans le pipeline.
- Peut MP4Box prendre l'entrée de données à partir d'une source qui n'est pas un fichier?
- Peut MP4Box saisir un tel contenu progressivement (à partir d'un fichier ou d'une autre source) alors que c'est en arrivant en temps réel? c'est à dire attendre un peu si le flux s'arrête pendant 1 sec et reprend automatiquement.
- Même question, mais pour la sortie: peut-elle sortie de quelque chose qui n'est pas un fichier (comme
stdout
) et peut-elle le faire progressivement, de sorte que chaque fois que les données de sortie est prêt, je vais être capable de le prendre et de le transférer vers le client web, essentiellement de la génération d'un interminable en pointillés MP4.
source d'informationauteur galbarm
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin MP4Box générer la sortie requise, mais vous aurez besoin de segmenter le contenu vous-même à la recherche pour les boîtes dans le fichier généré.
Fondamentalement, vous allez générer un
fMP4
avecH264
et de les envoyer au navigateur lemoov
boîte pour l'initialisation et lamoof+mdat
cases pour chaque fragment de MP4 que vous générez. Vous aurez pour code le joueur en JavaScript, vous n'aurez probablement pas être en mesure d'utiliser une norme DASH joueur.Pour générer le bon fragmenté MP4, vous devez transmettre à ffmpeg:
-movflags empty_moov+omit_tfhd_offset+frag_keyframe+default_base_moof
.Assurez-vous d'utiliser la dernière version disponible.
Autant je comprends votre solution, vous ne sont pas de streaming mais progressivement le téléchargement d'un seul fichier MP4. Suis-je comprendre que correctement?
J'ai récemment commencé à l' RTP2DASH projet de faire du vrai DASH live streaming à partir d'une source de données RTP. Il est encore très "alpha", mais il devrait être facilement adoptable pour de simples usecases.