2017-09-08 1 views
0

Bonne journée à tous! Donc, comme le titre l'indique, je développe une application avec des fonctionnalités similaires à celle de Periscope et Facebook Live streaming vidéo. Voici ce que l'objectif final est le suivant:Comment configurer le streaming vidéo HLS en direct à partir d'un périphérique iOS

  • Dispositif de diffusion [utilisateur]
  • EC2 instance [Accueillir un transcodeur ffmpeg]
  • CloudFront Distrubution [CDN]
  • 1 à n téléspectateurs de l'alimentation en direct

Je fais beaucoup de googler et ce que je ne peux pas semble comprendre est:

Lorsque vous envoyez des blocs de vidéo au serveur à partir du Broadcaster, comment créez-vous une liste de lecture .m3u8 lorsque vous n'avez pas encore tous les morceaux de vidéo (p. Ex., ). le périphérique envoie son premier morceau de vidéo 5 secondes)?

Il semble un fichier .m3u8 est créé à partir d'un fichier .mp4 qui est déjà complet, puis décomposé en morceaux ... Mais j'envoyer des morceaux de la vidéo sur le serveur, comment peut-il générer Fichier .m3u8 lorsque d'autres segments proviennent toujours du Broadcaster, de sorte que les observateurs/clients peuvent assembler continuellement les morceaux vidéo?

Je serai heureux de clarifier cette question plus loin. Merci!

+0

[ce GitHub] (https://gist.github.com/RLovelett/6791bde80575fc412983) aide-t-il? – ProgrammingEnthusiast

+0

@ProgrammingEnthusiast Merci, mais j'avais déjà vu ce lien. La procédure décompose un fichier .mp4 déjà complet ... Mais puisque cela va être un flux en direct, les fichiers mp4 seront en morceaux de 5 secondes. Merci bien! – Sean

Répondre

0

Si vous regardez les documents pour le segment muxer, vous pouvez spécifier le m3u8 à sortir et vous pouvez également lui indiquer de mettre à jour le m3u8 au fur et à mesure. Il pourrait ressembler à ceci:

ffmpeg -i infile.mp4 -c:v copy -c:a copy -map 0 -f ssegment -segment_list playlist.m3u8 -segment_list_type hls -segment_list_size 10 -segment_list_flags +live -segment_time 4 outchunk%07d.ts 

Notez le segment_list_size est le nombre maximum de morceaux référencés dans le fichier m3u8 à un moment donné et les segment_list_flags dit ffmpeg que c'est un flux en direct.

0

Je pense que votre confusion est que vous essayez d'envoyer des fragments HLS à leur serveur. Ne pas. Envoyer un flux via un autre protocole comme RTPM. Ensuite, laissez le serveur convertir en HLS.