web-dev-qa-db-fra.com

Couper le flux multimédia dans le serveur Websocket HTML5 pour une application de chat / vidéoconférence basée sur le Web

Nous travaillons actuellement sur un chat + (partage de fichiers +) application de vidéoconférence en utilisant les websockets HTML5 . Pour rendre notre application plus accessible, nous voulons implémenter le streaming adaptatif, en utilisant la séquence suivante:

  1. Le client de données audio/vidéo brutes va au serveur
  2. Le flux est divisé en morceaux de 1 seconde
  3. Encoder le flux dans différentes bandes passantes
  4. Le client reçoit un fichier manifeste décrivant les segments disponibles
  5. Télécharge un segment en utilisant HTTP normal
  6. Bande passante segment suivant choisi en fonction des performances du segment précédent
  7. Le client peut choisir parmi un certain nombre de flux alternatifs différents à divers débits de données

Alors .. Comment divisons-nous nos données audio/vidéo en morceaux avec Python?

Nous savons que Microsoft a déjà construit Expression Encoder 2 qui permet le streaming adaptatif, mais il ne prend en charge que Silverlight et ce n'est pas ce que nous voulons.

Éditer:
Il existe également une solution appelée FFmpeg (et pour Python un wrapper PyFFmpeg), mais elle ne prend en charge que Apple Streaming adaptatif.

25
Wouter Dorgelo

Je pense que ffmpeg est l'outil principal que vous voudrez regarder. Il est devenu le manipulateur de médias open source le plus bien pris en charge. Il y a un wrapper python pour cela. Bien qu'il soit également possible de accéder à la ligne de commande via le module de sous-processus .

5
mjhm

J'ai trouvé quelques Nice articles sur la façon dont les autres construisent un stream segmenter pour les autres plates-formes, alors maintenant nous savons comment en créer une en Python.

2
Wouter Dorgelo