[vlc] Re: videolan over a gprs connection
galenz at zinkconsulting.com
galenz at zinkconsulting.com
Sat May 20 23:52:15 CEST 2006
Eric,
I'm not the absolute expert on VLC, particularly when it comes to
configuring streaming, but I am extremely familiar with GPRS and
media compression.
First lets talk about GPRS. Maybe this is redundant to some people,
I'm not sure, but I think it might be worth explaining. GSM phone
calls are allocated what's called "timeslots" - GSM works by breaking
up the frequency into many channels, then each channel is split up
into many timeslots. Basically, this means multiple phones can share
the single channel by alternating which phone is broadcasting, in
such a way that each timeslot represents the same amount of access to
RF bandwidth.
GSM voice calls normally use one timeslot up and one timeslot down.
GPRS uses up to four up and four down simultaneously. The exact
number is limited by your provider and your hardware. Depending on
your signal strength, you will see anywhere from 8 to 20 kbps per
timeslot (standard encoding rates: 8, 12, 14.4, 20 kbps). In my
experience, I have rarely if ever seen 20 kbps, 12 kbps is a more
reasonable assumption. If you are driving, reception makes a big
difference, and unless you have amazing coverage and an antenna,
you're unlikely to have a stable datarate the whole way.
Providers may limit the number of timeslots you can use, particularly
if the network is very busy or you have an "unlimited" data plan. The
policies may be determined at the local towers, based on
predetermined rules or rules that vary with network load, so you can
easily be driving and move from a tower allowing four slots to a
tower only allowing two slots. You also need to check up on your
hardware (use a site like http://phonescoop.com/ ) because most
hardware will have some limitations. Usually you'll see it noted like
this "4+1" which means four downstream timeslots (so 32 to 80 kbps
depending on signal quality.) Sometimes you'll see it listed as
"Class 4" which has a distinct meaning. (A quick google search will
turn up plenty of pages with elaborate tables about this.) Many
classes also have a maximum limit on slots - for example, class 10
allows 4 down and 2 up, but no more than 5 simultaneous connections,
so (assuming no network restrictions) you will run at 3+2 or 4+1.
Although this only applies in some areas, particularly the US, there
is another protocol called "EDGE" which works just like GPRS but uses
a more efficient RF encoding approach allowing better throughput. But
all the same ideas apply, and it still works within the same
timeslots. Being in the US, I use EDGE regularly, sometimes moving in
excess of a GB of data per month. With a class 10 device I have
certainly seen 200 kbps downstream many times, but the upstream is
not nearly so great.
Sorry for this lengthy email, but GPRS really is that complex. And
we've only discussed the theory so far :)
As a general rule, you will want to ensure you have the best possible
signal quality for a GPRS link. However, no matter what you do, even
if you're in a fixed location, you're likely to still see some
variation in signal quality. Interference, varying atmospheric
conditions, even vehicles and people blocking signal can affect it.
If you're moving, it's almost certain that your data rate will be
varying, even if you have a fairly large antenna.
All of this will inevitably cause your data rate to vary, and this is
what makes streaming particularly maddening on GPRS. Your data rate
may drop to 32 kbps, then jump to 80 kbps as soon as you come around
a corner and handoff to a new tower.
The actual data is also in question. If you sit there running a ping,
you normally will never drop a packet - GPRS is generally quite good
at getting packets through reliably. It's just a question of timing!
With an idle GPRS connection you may be getting ping times between
500 and 1200 ms, and literally one packet may take 500 ms and the
next 1200 ms. Packets seem to always be delivered in a sequential
manner - this is handled like a PPP link on most computers - so the
busier the link, the higher the latency overall.
Sometimes, you'll get bursts of interference (i.e. tower handoffs,
other interference) which interrupt the connection and cause packets
to queue up, but the sequential delivery method means that everything
generally does get through, unless you have an extreme situation
where the packets can't be queued up anymore. (I'm not quite sure
what defines these parameters, but it will happen.) Packet dropping
on a GPRS connection isn't generally like ethernet or 802.11b/g where
you have a rather consistant level of drops, due to a bad link or
collisions. With GPRS, Similarly, if you take a call most hardware
pauses the connection and queues up packets to a certain extent. I'm
not entirely sure at what level the queueing is implemented, but I
have seen packets queued for 15 minutes or more during a call, and up
to 10 or 15 seconds during a connection, particularly if I'm driving.
Another interesting note - it takes more energy to send data than to
receive it, by a good bit. You may be shocked at how fast you go
through power on your phone and (in many cases) how hot it gets when
you're maxing out the upload for long periods of time. I've even seen
a number of phones and cards overheat and freeze or act strange when
uploading a lot, particularly with poor signal strength where the
phone has to broadcast near maximum power.
The result of all these factors is that GPRS seriously sucks for
streaming. If you are going to try it, I would suggest you use
substantial buffers, at least several seconds of content or more, if
you want a smooth experience, or even "progressive download" of the
video if it can be pre-recorded. If you want live, you may just want
to use RTSP and realize that you'll have places where it drops and
stutters, particularly if both client and server are mobile.
(Although you said only the client was mobile.) The very limited
bandwidth is also very challenging. A typical good case scenario (4 +
1 at 12 kbps each = 48 kbps down, 12 kbps up) is very similar to
streaming over a 56k modem with lots of latency. I'm sure a lot has
been written about delivering content to 56k users - and the bottom
line is that nothing looks very good, particularly in the days of
people watching 720p, 1080i, even 1080p video all over the place.
I would concur with the earlier poster that your provider may filter
ports or protocols, but I'm sure that can be negotiated. I have in
some cases simply setup an ssh tunnel over WAP ports or other allowed
ports to enable connectivity on an otherwise restricted network
connection.
As for actual compression, the leader of the pack right now is H.264
from the x264 project. Just like other projects like XviD, it's
always improving in quality, so be sure you have a recent version for
the encoding machine. Be sure to take advantage of all the features
it offers to help reduce bitrate - CABAC, etc. If you don't need the
video live, I would strongly suggest two-pass encoding for better
quality. This would go ideally with the progressive download model,
which is (in my opinion) the most preferred means for delivering
smooth playback on a mobile. You just end up a waiting a little
longer for it to start if your connection is particularly slow - the
variable nature of mobile connections is maddening like that.
The audio is an interesting one. The exact codec you want to use is a
little variable, sometimes one codec is actually better suited for a
certain type of content, and different content may require vastly
different settings or bitrates to sound good. I've been most
impressed with AAC-HE ("AAC High Efficiency" - aka AACplus or AAC+)
which has some quite impressive performance at low bitrates. I'm not
sure if VLC can encode AAC-HE yet, however, but I know it can decode
it. Alternatively, I would suggest you look at Ogg Vorbis or regular
AAC (usually "AAC Low Complexity"). MP3 is an older audio codec, and
has a hard time getting the quality of these newer codecs,
particularly at low bitrates, so I would not recommend it.
Hopefully this gives you a start on figuring out how to stream
content via GPRS with some modicum of quality. Honestly, I don't know
if you'll ever get anything really satisfying out of it. The premier
service (at least in the US) for streaming content via mobile
networks is MobiTV ( http://www.mobitv.com/ ) and they've done a
fairly good job of pulling it off - but even that isn't great.
I have tested MobiTV on my class 10 EDGE device with excellent signal
(the best case scenario, basically), plenty of CPU (200 MHz ARM CPU),
high res bright screen (320x320), high quality stereo headphones, etc
and I found it to be pretty terrible - I have unlimited data, and
even it were completely free for the service, I don't think I would
watch it. I'd sooner listen to a 64 kbps AAC-HE stream of the audio
and just hear it in good quality, instead of the tinny sounding
voices on MobiTV and distorted, choppy video images. This is what
MobiTV calls a "high frame rate experience" device. GPRS only devices
are called "standard frame rate experience" and really look even worse.
Fortunately, I believe there is substantial room for doing better
than MobiTV, but it probably would require the progressive download
approach using multi-pass VBR encoded content and you spending a
great deal of time tweaking all the compression settings to maximize
the quality.
I think that mobile video applications are only going to take off
when we see wide deployment of UMTS (WCDMA), but that's still a ways
away from any substantial penetration in the US market, and
internationally suffers from a quagmire of different frequencies and
modes that phones must now support to be fully "international"
friendly (US UMTS is rolling out at 850 MHz and 1900 MHz, most other
UMTS runs at 2100 MHz, and GSM/GPRS/EDGE is deployed at 850, 900,
1800, and 1900 MHz around the world, so now we need a five-band seven-
mode phone to work fully internationally! ) Fortunately, mobile
bandwidth is only going up while compression is only getting better
and better, not to mention that CPU speeds on mobiles are also
improving, so the situation is just getting better with time.
Interestingly, in the US we are migrating to all DTV / HDTV and we
use ATSC which uses 8VSB modulation, which precludes the reception of
HDTV while in motion due to it being very time sensitive and the
doppler effect. Currently, analog is suitable for small handheld
devices, but mobile displays are now ready for HD content
(particularly in-vehicle displays) and the FCC is forcing ALL
broadcasters to switch to DTV in the near future. Both of these
factors will soon make other mobile networks the only means of
delivering TV content to mobile viewers, so I foresee this market is
going to quickly become quite competitive. There is an E-VSB protocol
on the table from the ATSC commission, standardized in 2004, but I
don't know of any broadcasters that have adopted it, and I'm not sure
how easily E-VSB can be integrated into existing broadcast equipment,
and TV stations are wary of spending even more in digital
infrastructure after all they've spent by FCC mandate.
As you can tell, I do have a bit of an interest in this matter and I
would actually be curious to see what you end up working out in this
arena.
-Galen
galenz at zinkcconsulting.com
On May 20, 2006, at 4:28 AM, Antoine Roussel wrote:
> Hi,
>
> I don't know exactly your test configuration so there are two
> answers :
>
> If you have a "perfect network" between your 2 GPRS devices, you
> can send your data over UDP. By using UDP protocol, there isn't
> transmission control or stat return from the client (indeed it
> isn't "connection oriented" like TCP).
>
> If you use an operator network, this will be trickier... Some of
> them allow only few ports and few protocols. In this case, you
> should use the http protocol. This is a problem, as you said,
> because of the low upload bandwidth.
>
> Concerning the video codec, the best ratio quality/bit rate is
> gained by h264. For the audio codec, you an use MP3 or ogg for
> instance.
>
> If you succeed, I would be interested in your experience feedback.
>
> Antoine
>
> --
> _______________________________________
>
> Antoine Roussel
> Telecom Lille Student
>
> CV : http://cv.antoine-roussel.info
> _______________________________________
>
>
> On 5/19/06, Melin Eric-AEM024 <erik at motorola.com> wrote:
> Hi
>
>
> I'm trying to use videolan for streaming a video between 2 laptops
> (one vlc server and one vlc client), the client using a gprs
> connection to connect to the server.
>
> I was wondering which would be the most appropriate codecs to use
> to accommodate the low bandwidth available over gprs (in
> particular, since the uplink from client to server is particulary
> low, is there a particular mode in which the videolan signalling
> from client to server would be minimal).
>
>
> Thanks
>
> Eric
>
>
> Eric Melin
>
> Centre de Recherche de Motorola - Paris (CRM)
>
> ---------
> Classification POPI:
> [*] GBI General Business Information
> [ ] MIUO Motorola Internal Use Only
> [ ] MCP Motorola Confidential Proprietary
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc/attachments/20060520/8c6d0490/attachment.html>
More information about the vlc
mailing list