Streaming video on variable bandwidth connection?

Hey guys,

Can I pick your brains please. :slight_smile:

I’m trying to work out what technology to use;

Situation:
Mobile Linux computer connected via 3G/GPRS to internet.
The computer is likely to encounter fluctuating connectivity where it
connectivity drops between low GPRS signal, full HDPSA signal and
completely offline.

Objective:
I’m trying to find a technology to stream [live] video from a V4L2
device to ‘the internet’ over the able connection. The connection only
needs to be one way.

Caveat:
Ideally I need to work out something that makes a 'best effort’
judgement based on the amount/quality of bandwidth available and and
streams the best picture it can. Eg. Where loads of bandwidth is
available, there is a nice picture and where there isn’t, there isn’t a
nice picture, but there isn’t nothing.

Does anything like this exist?

Ideally something I can pull the video out in something resembling a
sane format would be cool.
Bonus points if it’s easily scriptable…

Cheers,

Tim

the n900 is very hackable - in fact Nokia encourage you to do so. I
don’t know whether it can be configured to do what you want but it
might be worth at least a cursory look.

The processor is a 600MHz ARM, 256MB RAM, 768MB page file, 840x480
resistive touch screen, 5mp camera, running a cut-down version of
Debian’s armel build IIRC

Andrew Gladwell.On Jan 31, 11:47 pm, Tim Dobson li...@tdobson.net wrote:

Hey guys,

Can I pick your brains please. :slight_smile:

I’m trying to work out what technology to use;

Situation:
Mobile Linux computer connected via 3G/GPRS to internet.
The computer is likely to encounter fluctuating connectivity where it
connectivity drops between low GPRS signal, full HDPSA signal and
completely offline.

Objective:
I’m trying to find a technology to stream [live] video from a V4L2
device to ‘the internet’ over the able connection. The connection only
needs to be one way.

Caveat:
Ideally I need to work out something that makes a 'best effort’
judgement based on the amount/quality of bandwidth available and and
streams the best picture it can. Eg. Where loads of bandwidth is
available, there is a nice picture and where there isn’t, there isn’t a
nice picture, but there isn’t nothing.

Does anything like this exist?

Ideally something I can pull the video out in something resembling a
sane format would be cool.
Bonus points if it’s easily scriptable…

Cheers,

Tim

the n900 is very hackable - in fact Nokia encourage you to do so. I
don’t know whether it can be configured to do what you want but it
might be worth at least a cursory look.

The processor is a 600MHz ARM, 256MB RAM, 768MB page file, 840x480
resistive touch screen, 5mp camera, running a cut-down version of
Debian’s armel build IIRC

Yeah, I have an N900 and an openmoko, but it was more as to what
software streaming protocol to use… that ticks the boxes I mentioned.
Hackable hardware platforms are two a penny these days. :smiley:

Hey guys,

Can I pick your brains please. :slight_smile:

I’m trying to work out what technology to use;

Situation:
Mobile Linux computer connected via 3G/GPRS to internet.
The computer is likely to encounter fluctuating connectivity where it
connectivity drops between low GPRS signal, full HDPSA signal and
completely offline.

Objective:
I’m trying to find a technology to stream [live] video from a V4L2
device to ‘the internet’ over the able connection. The connection only
needs to be one way.

Caveat:
Ideally I need to work out something that makes a 'best effort’
judgement based on the amount/quality of bandwidth available and and
streams the best picture it can. Eg. Where loads of bandwidth is
available, there is a nice picture and where there isn’t, there isn’t a
nice picture, but there isn’t nothing.

Does anything like this exist?

Ideally something I can pull the video out in something resembling a
sane format would be cool.
Bonus points if it’s easily scriptable…

Cheers,

Tim

The only thing that comes to mind is something built around ffmpeg /
ffserver. Lots of codecs available to choose from and streaming
transport protocols like rtsp.

While it’d be easy to set this up to stream at a constant bit rate, I’m
not sure how you would tell ffmpeg to modify the bit rate on the fly and
you’d also need to know how much bandwidth was available (this could be
determined by a simple script polling a dongle for current network type
and signal strength).

If the device creating the video stream is stationary, you can use a
directional antenna pointed at a 3G mast to ensure the best signal
possible and then make a pretty good judgement on the amount of
bandwidth you have available and that it’s going to remain fairly
constant.

If the device creating the video stream is moving, you’re in a world of
pain. You can pretty much guarantee that there will be times when you
are without signal (i.e available bandwidth = 0, latency = 5-10s at
best) and will not be able to stream anything. In this situation, to
maintain a constant stream to an end user you’d probably want to stream
at a lowish bitrate to an intermediary server that can maintain a large
buffer. The video stream can buffer in the broadcasting device until
signal is available, then replenish the buffer in the intermediary
server. This way the intermediary server can broadcast a fairly constant
stream.

That latter part is of course theoretical, I don’t know if it would be
easily implemented with avaliable free software packages.

Guy.