Afin de suivre la tendance, cet article vous présentera le processus de base et les principaux points techniques de la vidéo diffusion en direct, y compris, mais sans s'y limiter, la technologie front-end.
1 Le H5 peut-il diffuser des vidéos en direct ?
Bien sûr, H5 est populaire depuis si longtemps et couvre tous les aspects de la technologie.
Pour l'enregistrement vidéo, vous pouvez utiliser le puissant webRTC (Web Real-Time Communication), qui est une technologie qui prend en charge les navigateurs Web pour les conversations vocales ou vidéo en temps réel. c'est qu'il n'est disponible que sur PC chrCertains supports sont meilleurs, mais le support mobile n'est pas idéal.
Pour la lecture vidéo, vous pouvez utiliser le protocole HLS (HTTP Live Streaming) pour lire le flux en direct. iOS et Android prennent naturellement en charge ce protocole. simple à configurer et peut être utilisé directement. Juste la balise vidéo.
Compatibilité webRTC :
la balise vidéo lit la vidéo du protocole HLS :
1 2 3 4 |
<vidéo contrôles lecture automatique<🎜> < span class="crayon-o">> <source < span class="Apple-converted-space"> src="http://10.66 . 69.77:8080/hls/mystream.m3u8" type="application/vnd.apple.mpegurl" /> <p class<🎜>="avertissement">Votre navigateur fait pas support HTML5 vidéo.</p> span > span > </ < span class="crayon-v">vidéo> |
2 Qu'est-ce que le protocole HLS exactement ?
Pour faire simple, il s'agit de diviser l'intégralité du flux en petits fichiers HTTP à télécharger, et d'en télécharger seulement quelques-uns à la fois. Comme mentionné précédemment, un .m3u8 est introduit pour. H5 pour lire un fichier de vidéos en direct, ce fichier est basé sur le protocole HLS et stocke les métadonnées du flux vidéo.
Chaque fichier .m3u8 correspond à plusieurs fichiers ts. Ces fichiers ts sont les données réelles qui stockent la vidéo. Le fichier m3u8 stocke uniquement les informations de configuration et les chemins associés de certains fichiers ts. .m3u8 change dynamiquement. La balise vidéo analysera ce fichier et trouvera le fichier ts correspondant à lire. Par conséquent, généralement afin d'accélérer, .m3u8 est placé sur le serveur Web et le fichier ts est placé sur le cdn.
Le fichier .m3u8 est en fait un fichier m3u codé en UTF-8. Ce fichier lui-même ne peut pas être lu. Il stocke simplement le fichier texte des informations de lecture :
1 2 3 4 5 6 7 |
#EXTM3U en-tête de fichier m3u #EXT-X-MEDIA - SEQUENCE Le premierfragment TS Numéro de série #EXT- X-TARGETDURATION FilmDurée maximale du TS span> span> #EXT-X-ENDLISTE /span> #EXTINF Spécifiez chaque segment multimédia(ts) durée (secondes), valable uniquement pour l'URI qui le suit mon flux -12.ts |
fichier ts :
Le processus de demande HLS est :
1 URL de requête http m3u8.
2 Le serveur renvoie une playlist m3u8. Cette playlist est mise à jour en temps réel. Généralement, 5 URL de données sont données à la fois.
3 Le client analyse la playlist m3u8, puis demande l'URL de chaque segment dans l'ordre pour obtenir le flux de données ts.
Processus simple :
Délai de diffusion en direct de 3 HLS
Nous savons que le protocole hls will Le flux en direct est divisé en courtes vidéos à télécharger et à lire, donc en supposant que la liste contient 5 fichiers ts et que chaque fichier TS contient 5 secondes de contenu vidéo, le délai global est alors de 25 secondes. Parce que lorsque vous voyez ces vidéos, l'hôte a déjà enregistré la vidéo et l'a mise en ligne , il y a donc un retard causé par cela. Bien entendu, la longueur de la liste et la taille d'un seul fichier ts peuvent être raccourcies pour réduire la latence, à l'extrême, la longueur de la liste peut être réduite à 1 et la durée de ts à 1 s. Le nombre de requêtes et augmente la pression du serveur. Lorsque la vitesse du réseau est lente, le timing provoque plus de mise en mémoire tampon, donc la durée ts officiellement recommandée par Apple est de 10 secondes, ce qui entraînera un retard de 30 secondes. Références : https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html
4 Quel est l'ensemble du processus de streaming vidéo en direct ?
La vidéo en direct peut être grossièrement divisée en :1 Fin d'enregistrement vidéo : généralement un périphérique d'entrée audio et vidéo sur un ordinateur ou une caméra ou un microphone sur un téléphone mobile . Actuellement, mobile Principalement des vidéos sur téléphone mobile.
2 Lecteur vidéo : Il peut s'agir du lecteur sur l'ordinateur, du lecteur natif sur le téléphone mobile, et de la balise vidéo h5, etc. Actuellement, le lecteur natif sur le téléphone mobile est le principal.
3 Serveur vidéo : généralement un serveur nginx, utilisé pour accepter la source vidéo fournie par la fin de l'enregistrement vidéo et fournir des services de streaming au lecteur vidéo.
Processus simple :5 Comment collecter de l'audio et de la vidéo ?
Clarifions d'abord quelques concepts :Encodage vidéo : ce qu'on appelle l'encodage vidéo fait référence à la conversion d'un fichier dans un certain format vidéo en un autre via une compression spécifique. technologie. Une méthode de fichier au format vidéo. La vidéo que nous utilisons pour enregistrer sur l'iPhone doit être codée, téléchargée et décodée avant de pouvoir être lue dans le lecteur côté utilisateur.
Normes de codage et de décodage : les normes de codage et de décodage les plus importantes dans la transmission en streaming vidéo incluent les normes H.261, H.263 et H.264 de l'UIT, parmi lesquelles le protocole HLS prend en charge H. .264 Codage du format. Codage
Audio : Semblable à l'encodage vidéo, le flux audio original est encodé, téléchargé, décodé et lu dans le lecteur selon certaines normes. Bien entendu, il existe de nombreuses normes d'encodage pour l'audio, telles que. Encodage PCM, encodage WMA, encodage AAC, etc. La méthode d'encodage audio prise en charge par notre protocole HLS ici est l'encodage AAC.
1 Audio et Collection vidéo, dans iOS, le flux de données audio et vidéo original peut être collecté à l'aide de AVCaptureSession et AVCaptureDevice. 2 Encodez H264 pour la vidéo et AAC pour l'audio. Il existe des bibliothèques d'encodage encapsulées dans iOS pour encoder l'audio et la vidéo.
3 Assemblez les données audio et vidéo codées en paquets ;
4 Établissez une connexion RTMP et transmettez-la au serveur.
6 Qu'est-ce que le ffmpeg mentionné plus tôt ?
Comme le précédent x264, ffmpeg est en fait un ensemble de bibliothèques d'encodage. Semblable à Xvid, Xvid est un codec basé sur le protocole MPEG4, et x264 est un encodeur basé sur le protocole H.264. ffmpeg intègre divers protocoles d'encodage et de décodage audio et vidéo En définissant des paramètres, l'encodage et le décodage basés sur MPEG4, H.264 et d'autres protocoles peuvent être complétés. La démo utilise ici la bibliothèque d'encodage x264.
7 Qu'est-ce que le RTMP ?
Real Time Messaging Protocol (RTMP en abrégé) est un ensemble de protocoles de diffusion vidéo en direct développés par Macromedia et appartient désormais à Adobe. Comme HLS, il peut être appliqué aux diffusions vidéo en direct. La différence est que RTMP est basé sur Flash et ne peut pas être lu dans les navigateurs iOS, mais ses performances en temps réel sont meilleures que HLS. Par conséquent, ce protocole est généralement utilisé pour télécharger des flux vidéo, c'est-à-dire que les flux vidéo sont transmis au serveur.
Voici une comparaison entre hls et rtmp :
8 Push streaming
Le soi-disant push Le streaming consiste à envoyer nos données audio et vidéo codées au serveur de streaming vidéo. Généralement, rtmp est utilisé pour pousser le flux. Vous pouvez utiliser la bibliothèque tierce librtmp-iOS pour pousser le flux. core api est que les utilisateurs peuvent appeler. Si vous trouvez cela gênant, vous pouvez utiliser le SDK de streaming vidéo iOS prêt à l'emploi, qui est également basé sur rtmp, https://github.com/runner365/LiveVideoCoreSDK.
9 Construction du serveur Push
Construction simple du serveur Push Étant donné que les flux vidéo que nous téléchargeons sont basés sur le protocole rtmp, le serveur doit également prendre en charge rtmp. les étapes suivantes :
1 Installer un serveur nginx.
2 Installez l'extension rtmp de nginx La plus couramment utilisée actuellement est https://github.com/arut/nginx-rtmp-module
3 Configurer le fichier de configuration nginx :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!