[jitsi-dev] video qulity in lower bandwith situation with jitsi-android


Hi Pawel ,
    I tried the method you metioned about how to change the resolution ,sure it works , a lower quality video shown , but the problem is that the BitRate is not reduced notly, and the delay and mosaic still stay there.
    So i'm wondering if the mediaRecorder codec is the best way we got? Or we have other solutions? Becuase i found some commercial APP(such as "WeChat"->an app famous in china,or other app you may know) are working better in video call.



Message: 1
Date: Thu, 25 Jul 2013 12:06:08 +0200
From: Pawe? Domas <pawel.domas@jitsi.org>
To: Jitsi Developers <dev@jitsi.org>
Subject: Re: [jitsi-dev] video qulity in lower bandwith situation with
Content-Type: text/plain; charset=ISO-8859-1

Hi Ray,

On Thu, Jul 25, 2013 at 11:48 AM, MAXWELL <95143848@qq.com> wrote:

Hi Pawel and Guys ,
    Thanks for your reply, i'll look into the code about the reconnection.
And the camera switch is working well now .
    I have been trouble at the video quality in jitsi-android, because the
signal situation I test in is always not as good as wifi(I don't know
what it's like in your country), the video that shown on the other side
(such as PC ) is with a serious delay and always mosaic when movement
happened ,the BitRate is alway keep in at 350~500Kbps. So is there any
solution about this? Will the FFMPEG will work better than mediarecoder

I recall you've been asking about changing video resolution, but
forgot to answer - sorry about that.
Changing video resoultion is currently not finished and the one
selected in settings is not respected I believe.

I suppose libjitsi is not scaling video in this case, but just sends
what mediarecorder gives. However we can try to reconfigure
mediarecorder before video is started.

In mediarecorder datasource there are lines:

                // Tries to read previously stored parameters
                this.h264Params = H264Parameters.getStoredParameters();
                if(this.h264Params == null)
                    // Pre-configure media recorder and camera for video format
                    configure(camera, mediaRecorder, videoFormat);
                    // Obtain h264 parameters from short sample video
                    this.h264Params = obtainParameters(camera, mediaRecorder);
                    // Persists the parameters
                // Prints the parameters

                // Pre-configure media recorder and camera for video format
                configure(camera, mediaRecorder, videoFormat);

What happens here is that we use first video format that returns H264
as it's encoding. This format can be of high resoultion by default.
There is configure function that takes this format and sets
mediarecorder parameters and video size. You can try to experiment by
puttings there some static values. But what's important here is the
fact that we obtain h264 paramaters which contains the size, so you
will have to clear stored parameters each time video size is changed.

Hope this helps and please let me know if that worked.