Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 364
Wouter Dorgelo Avatar asked Nov 22 '10 03:11

Wouter Dorgelo


1 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.

like image 71
mjhm Avatar answered Sep 25 '22 06:09

mjhm