I have an MPEG-4 datastream with high bandwidth (over 1 Mbit/s). Now I want to adapt this stream in real-time so it can be transmitted over a low bit rate channel (maybe lower than 200 Kbit/s).
So what is my options?
1. I can unpack the movie, and decrease the resolution and the quality of the stream to lower the demand for bandwidth.
This is quite complex, is it possible to do in real-time 25 frames/s?
2. Or I wondering if the MPEG-4 standard can handle this smarter? Much work is already done for encoding and identifying objects and motionvectors. And this is a very CPU-intensive part.
Maybe the second alternative is to change some parameters in the stream and it will automatically lower the demand for bandwidth without to much need for CPU-power?
I have borrowed a book on the library called "Video compression demystified" by Peter Symes.
It's a good book that tries to explain everything from DCT in JPEG to MPEG-4.
It says like this:
Page 211, the second point, Simple Scalable Profile
This adds support for coding of temporal and spatial scalable objects to the Simple Visual Profile. It is useful for
applications which provide services at more than one level of quality due to bit rate or decoder resource limitations, such as Internet use or software decoding.
Page 216, Fine Grain Scalability
The Fine Grain Scalability (FGS), often known as the Streaming Profile is intended to support applications and environment where the bandwidth and/or computational power cannot be predicted and may vary dynamically. The scaling tools provided by other parts of MPEG-4 are powerful in their own way, but have significant limitations.
FGS provides a mechanism that permits a single encoding process, producing a bitstream that can be modified subsequently in two different ways. Prior to transmission, the bitstream may be processed to scale it down to known bandwidth limitations. This can be performed dynamically, for example in response to the requirements of a statistical multiplexing system. Downstream distribution points may reduce the bit rate if necessary.
This sounds great, I can skip the decode/encode part and only lower the quality of the stream.
But how exactly is this done?
Can this operation be made on all MPEG-4 streams?
So what is my options?
1. I can unpack the movie, and decrease the resolution and the quality of the stream to lower the demand for bandwidth.
This is quite complex, is it possible to do in real-time 25 frames/s?
2. Or I wondering if the MPEG-4 standard can handle this smarter? Much work is already done for encoding and identifying objects and motionvectors. And this is a very CPU-intensive part.
Maybe the second alternative is to change some parameters in the stream and it will automatically lower the demand for bandwidth without to much need for CPU-power?
I have borrowed a book on the library called "Video compression demystified" by Peter Symes.
It's a good book that tries to explain everything from DCT in JPEG to MPEG-4.
It says like this:
Page 211, the second point, Simple Scalable Profile
This adds support for coding of temporal and spatial scalable objects to the Simple Visual Profile. It is useful for
applications which provide services at more than one level of quality due to bit rate or decoder resource limitations, such as Internet use or software decoding.
Page 216, Fine Grain Scalability
The Fine Grain Scalability (FGS), often known as the Streaming Profile is intended to support applications and environment where the bandwidth and/or computational power cannot be predicted and may vary dynamically. The scaling tools provided by other parts of MPEG-4 are powerful in their own way, but have significant limitations.
FGS provides a mechanism that permits a single encoding process, producing a bitstream that can be modified subsequently in two different ways. Prior to transmission, the bitstream may be processed to scale it down to known bandwidth limitations. This can be performed dynamically, for example in response to the requirements of a statistical multiplexing system. Downstream distribution points may reduce the bit rate if necessary.
This sounds great, I can skip the decode/encode part and only lower the quality of the stream.
But how exactly is this done?
Can this operation be made on all MPEG-4 streams?
Comment