Maison développement back-end Tutoriel Python Serveur python WebRTC : serveurs STUN/TURN pour votre application python

Serveur python WebRTC : serveurs STUN/TURN pour votre application python

Nov 18, 2024 am 12:09 AM

Python est un langage de programmation polyvalent et accessible, connu pour sa syntaxe claire et sa lisibilité

Cela en fait un bon choix pour créer des applications Webrtc 

Nous pouvons créer un serveur WebRTC en python en utilisant des bibliothèques telles que aiortc

bibliothèque aortique

  • Implémentation Python pur : 

    • La bibliothèque aiortc est une implémentation purement python de WebRTC et ORTC.
    • Cela signifie que vous n'avez pas besoin de dépendre d'une bibliothèque tierce ou de toute autre dépendance
  • Construit sur asyncio  : 

    •  aiortc est construit sur la propre bibliothèque asyncio de Python pour les connexions asynchrones. 
    • Vous permettant ainsi de gérer facilement plusieurs connexions simultanées
  • Canaux médias et données :

    • La bibliothèque prend en charge les canaux vidéo, audio ainsi que les canaux de données, permettant ainsi un large éventail de fonctionnalités de communication en temps réel.
  • Facilité d'intégration :

    • aortc peut être facilement intégré à d'autres bibliothèques Python telles que aiohttp pour le serveur Web ainsi qu'à d'autres bibliothèques tierces telles que socket.io pour la gestion des événements en temps réel
  • Documentation complète et exemples :

    • la bibliothèque aiortc est livrée avec une documentation complète et différents exemples qui peuvent vous aider à démarrer rapidement 

Configuration d'un serveur WebRTC en Python

Pré-requis

  1. Python 3.x installé :

    1. Assurez-vous que Python 3.x est installé sur votre ordinateur ou serveur. Vous pouvez vérifier la version de Python comme ceci  
python3 --version
Copier après la connexion
Copier après la connexion
  1. Connaissance de base de la programmation asynchrone :

    1. Vous avez besoin de connaissances de base sur le fonctionnement de la programmation asynchrone. 
    2. Nous allons utiliser la bibliothèque asynchrone dans cet article, qui est importante pour les connexions et les flux de données simultanés

Installation des bibliothèques nécessaires 

utiliser pip pour installer aiortc et d'autres dépendances 

aiortc est une implémentation purement python de webrtcand ORTC. Il utilise les fonctionnalités asynchrones du langage Python pour gérer la communication en temps réel

Installez les bibliothèques en utilisant pip comme ça

pip install aiortc aiohttp
Copier après la connexion
Copier après la connexion
  • aiorrtc fournit la fonctionnalité WebRTC de base

  • aiohttp est un framework client/serveur HTTP asynchrone, nous allons utiliser ce framework pour la signalisation

Développement du serveur

WebRTC python server: STUN/TURN servers for your python app

Configuration de la signalisation avec WebSockets

  1. Configuration de la signalisation avec WebSockets

WebRTC a besoin d'un mécanisme de signalisation afin d'établir une connexion. 

WebRTC fait cela en échangeant des descriptions SDP ou de session et des candidats ICE entre pairs

Pour cela, vous pouvez utiliser n'importe quoi. Dans cet article, nous allons utiliser WebSockets pour une communication bidirectionnelle en temps réel entre client et serveur

Configuration de la signalisation (code serveur)

python3 --version
Copier après la connexion
Copier après la connexion
  1. Gestion des connexions entre pairs et des flux multimédias

Ici, nous allons créer un objet RTCPeerConnection pour gérer la connexion et les flux multimédias

Exemple de code de serveur (Connexion Peer)

pip install aiortc aiohttp
Copier après la connexion
Copier après la connexion

WebRTC python server: STUN/TURN servers for your python app

  1. Intégration des serveurs TURN dans la configuration ICE 

Pour gérer la traversée NAT et assurer la connectivité, nous avons besoin de serveurs TURN.

Dans cet article, nous allons utiliser les serveurs Metered TURN. Metered est un fournisseur mondial de serveur TURN 

Vous pouvez souscrire à un forfait gratuit sur les serveurs TURN mesurés qui offre un quota de serveur TURN mensuel de 50 Go et des forfaits payants sont également disponibles 

Étapes :

  • Obtenir les informations d'identification

Inscrivez-vous sur Metered.ca/stun-turn et obtenez vos identifiants TURN 

Sur le tableau de bord, cliquez sur Cliquez ici pour générer votre premier identifiant pour créer un nouvel identifiant de serveur TURN

WebRTC python server: STUN/TURN servers for your python app

Cliquez ensuite sur le bouton Instructions pour obtenir votre baie de serveurs ICE.

WebRTC python server: STUN/TURN servers for your python app

Vous pouvez également utiliser la clé API pour activer les serveurs TURN

  • Configurer les serveurs ICE
import asyncio
from aiohttp import web
import json

async def index(request):
    with open('index.html', 'r') as f:
        content = f.read()
    return web.Response(text=content, content_type='text/html')

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)
    # Handle incoming WebSocket messages here
    return ws

app = web.Application()
app.router.add_get('/', index)
app.router.add_get('/ws', websocket_handler)

web.run_app(app)
Copier après la connexion
  1. Exemple de code illustrant les streps clés

Voici comment on peut tout intégrer ici

from aiortc import RTCPeerConnection, RTCSessionDescription

pcs = set()  # Keep track of peer connections

async def websocket_handler(request):
    ws = web.WebSocketResponse()
    await ws.prepare(request)

    pc = RTCPeerConnection()
    pcs.add(pc)

    @pc.on("datachannel")
    def on_datachannel(channel):
        @channel.on("message")
        async def on_message(message):
            # Handle incoming messages
            pass

    async for msg in ws:
        if msg.type == web.WSMsgType.TEXT:
            data = json.loads(msg.data)

            if data["type"] == "offer":
                await pc.setRemoteDescription(RTCSessionDescription(
                    sdp=data["sdp"], type=data["type"]))
                answer = await pc.createAnswer()
                await pc.setLocalDescription(answer)
                await ws.send_json({
                    "type": pc.localDescription.type,
                    "sdp": pc.localDescription.sdp
                })

            elif data["type"] == "candidate":
                candidate = data["candidate"]
                await pc.addIceCandidate(candidate)
        elif msg.type == web.WSMsgType.ERROR:
            print(f'WebSocket connection closed with exception {ws.exception()}')

    pcs.discard(pc)
    return ws
Copier après la connexion

Conseils pratiques de mise en œuvre

Considérations relatives au réseau

  1. Gestion du parcours NAT avec les serveurs Metered.ca STUN/TURN
  • Serveurs STUN : Ceux-ci aident les appareils clients qui se trouvent derrière un NAT à connaître leur propre adresse IP et leur numéro de port. Pour en savoir plus sur les serveurs STUN, consultez Stun Server : Qu'est-ce que Session Traversal Utilities for NAT ?

  • Serveurs TURN : Les serveurs TURN relaient le trafic d'un homologue à l'autre lorsque la communication directe n'est pas possible en raison de règles NAT ou de pare-feu. Pour en savoir plus sur les serveurs TURN, consultez : Qu'est-ce qu'un serveur TURN ?

  1. Garantir des connexions fiables et à faible latence
  • Routage géographique automatique : Metered.ca propose un routage géographique automatique 

Optimisation des performances 

  1. Utiliser asyncio pour la gestion de la concurrence

  2. Bonnes pratiques de gestion des flux multimédias

WebRTC python server: STUN/TURN servers for your python app

  1. API : TURN gestion du serveur avec une API puissante. Vous pouvez faire des choses comme ajouter/supprimer des informations d'identification via l'API, récupérer par utilisateur/informations d'identification et métriques utilisateur via l'API, activer/désactiver les informations d'identification via l'API, récupérer les données d'utilisation par date via l'API.

  2. Ciblage de géolocalisation globale : Dirige automatiquement le trafic vers les serveurs les plus proches, pour une latence la plus faible possible et des performances de la plus haute qualité. moins de 50 ms de latence partout dans le monde

  3. Serveurs dans toutes les régions du monde : Toronto, Miami, San Francisco, Amsterdam, Londres, Francfort, Bangalore, Singapour, Sydney, Séoul, Dallas, New York

  4. Faible latence : moins de 50 ms de latence, partout dans le monde.

  5. Rentable : tarification à l'utilisation avec réductions sur la bande passante et le volume disponibles.

  6. Administration facile : Obtenez des journaux d'utilisation, des e-mails lorsque les comptes atteignent les limites de seuil, des enregistrements de facturation et une assistance par e-mail et par téléphone.

  7. Conforme aux normes : Conforme aux RFC 5389, 5769, 5780, 5766, 6062, 6156, 5245, 5768, 6336, 6544, 5928 sur UDP, TCP, TLS et DTLS.

  8. Multi‑Tenancy : Créez plusieurs informations d'identification et séparez l'utilisation par client ou par différentes applications. Obtenez des journaux d'utilisation, des enregistrements de facturation et des alertes de seuil.

  9. Fiabilité d'entreprise : 99,999 % de disponibilité avec SLA.

  10. Échelle d'entreprise : Sans limite sur le trafic simultané ou le trafic total. Les serveurs TURN mesurés offrent une évolutivité d'entreprise

  11. 5 Go/mois gratuits : Obtenez 5 Go chaque mois d'utilisation gratuite du serveur TURN avec le forfait gratuit

  12. Fonctionne sur les ports 80 et 443

  13. Prend en charge TURNS SSL pour autoriser les connexions via des pare-feu d'inspection approfondie des paquets.

  14. Prend en charge TCP et UDP

  15. STUN gratuit et illimité

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1670
14
Tutoriel PHP
1274
29
Tutoriel C#
1256
24
Python vs C: courbes d'apprentissage et facilité d'utilisation Python vs C: courbes d'apprentissage et facilité d'utilisation Apr 19, 2025 am 12:20 AM

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Python et temps: tirer le meilleur parti de votre temps d'étude Python et temps: tirer le meilleur parti de votre temps d'étude Apr 14, 2025 am 12:02 AM

Pour maximiser l'efficacité de l'apprentissage de Python dans un temps limité, vous pouvez utiliser les modules DateTime, Time et Schedule de Python. 1. Le module DateTime est utilisé pour enregistrer et planifier le temps d'apprentissage. 2. Le module de temps aide à définir l'étude et le temps de repos. 3. Le module de planification organise automatiquement des tâches d'apprentissage hebdomadaires.

Python vs. C: Explorer les performances et l'efficacité Python vs. C: Explorer les performances et l'efficacité Apr 18, 2025 am 12:20 AM

Python est meilleur que C dans l'efficacité du développement, mais C est plus élevé dans les performances d'exécution. 1. La syntaxe concise de Python et les bibliothèques riches améliorent l'efficacité du développement. Les caractéristiques de type compilation et le contrôle du matériel de CC améliorent les performances d'exécution. Lorsque vous faites un choix, vous devez peser la vitesse de développement et l'efficacité de l'exécution en fonction des besoins du projet.

Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apr 18, 2025 am 12:22 AM

Est-ce suffisant pour apprendre Python pendant deux heures par jour? Cela dépend de vos objectifs et de vos méthodes d'apprentissage. 1) Élaborer un plan d'apprentissage clair, 2) Sélectionnez les ressources et méthodes d'apprentissage appropriées, 3) la pratique et l'examen et la consolidation de la pratique pratique et de l'examen et de la consolidation, et vous pouvez progressivement maîtriser les connaissances de base et les fonctions avancées de Python au cours de cette période.

Python vs C: Comprendre les principales différences Python vs C: Comprendre les principales différences Apr 21, 2025 am 12:18 AM

Python et C ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1) Python convient au développement rapide et au traitement des données en raison de sa syntaxe concise et de son typage dynamique. 2) C convient à des performances élevées et à une programmation système en raison de son typage statique et de sa gestion de la mémoire manuelle.

Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Apr 27, 2025 am 12:03 AM

PythonlistSaReparmentofthestandardLibrary, tandis que les coloccules de colocède, tandis que les colocculations pour la base de la Parlementaire, des coloments de forage polyvalent, tandis que la fonctionnalité de la fonctionnalité nettement adressée.

Python: automatisation, script et gestion des tâches Python: automatisation, script et gestion des tâches Apr 16, 2025 am 12:14 AM

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

Python pour le développement Web: applications clés Python pour le développement Web: applications clés Apr 18, 2025 am 12:20 AM

Les applications clés de Python dans le développement Web incluent l'utilisation des cadres Django et Flask, le développement de l'API, l'analyse et la visualisation des données, l'apprentissage automatique et l'IA et l'optimisation des performances. 1. Framework Django et Flask: Django convient au développement rapide d'applications complexes, et Flask convient aux projets petits ou hautement personnalisés. 2. Développement de l'API: Utilisez Flask ou DjangorestFramework pour construire RestulAPI. 3. Analyse et visualisation des données: utilisez Python pour traiter les données et les afficher via l'interface Web. 4. Apprentissage automatique et AI: Python est utilisé pour créer des applications Web intelligentes. 5. Optimisation des performances: optimisée par la programmation, la mise en cache et le code asynchrones

See all articles