Chopping media stream in HTML5 websocket server for webbased chat/video conference application

Question:

We are currently working on a chat + (file sharing +) video conference application using HTML5 websockets. To make our application more accessible we want to implement Adaptive Streaming, using the following sequence:

  1. Raw audio/video data client goes to server
  2. Stream is split into 1 second chunks
  3. Encode stream into varying bandwidths
  4. Client receives manifest file describing available segments
  5. Downloads one segment using normal HTTP
  6. Bandwidth next segment chosen on performance of previous one
  7. Client may select from a number of different alternate streams at a variety of data rates

So.. How do we split our audio/video data in chunks with Python?

We know Microsoft already build the Expression Encoder 2 which enables Adaptive Streaming, but it only supports Silverlight and that’s not what we want.

Edit:
There’s also an solution called FFmpeg (and for Python a PyFFmpeg wrapper), but it only supports Apple Adaptive streaming.

Asked By: Wouter Dorgelo

||

Answers:

I think ffmpeg is the main tool you’ll want to look at. It’s become most well supported open source media manipulator. There is a python wrapper for it. Though it is also possible to access the command line through the subprocess module.

Answered By: mjhm

I’ve found some nice articles about how other people build a stream segmenter for other platforms, so now we know how to build one in Python.

Answered By: Wouter Dorgelo
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.