Thursday, November 24, 2011

Fixing Skype video aspect ratio on Linux



Linux is the main OS in my laptop and I use Skype a lot on it. Unfortunately Skype support on linux sucks! Now that Micro$oft bought $kype it should be worse! I'm gradually moving to Google talk video, but a lot of contacts (specially my family) still use Skype only.

Because is poorly developed Linux version of Skype doesn't allow resize the video window and aspect ratio. This is a pain when you have a HD Webcam because Skype always start a video call with a 640x480 ratio (HQ video call) and switch automatically to HD quality (1280x720) if your connection is higher than 30KB/s. Instead of change the aspect ratio from 4:3 to 16:9 Skype shrinks the HD video in a 4:3 frame, which make your video really weird for the other person causing a "wobbly" image effect some times.



If Skype was open source, we could try to correct that issue hacking the code. But the code is proprietary and there is no way to change the aspect ratio in the configuration file. The only way to fix it is restricting the upload rate during video call to ~30KB/s.

Linux has a command to control network traffic called "tc". Let's create a shell script that will be executed and will limit our upload speed to ~30KB/s when we start a call and another script that will restore our upload speed after we finish a call.

To limit upload speed create a file called "limit_upload_bandwidth.sh", fill with the code below and give permission to execute:

To restore the upload speed create a file "called restore_upload_bandwidth.sh" and fill with:


Now let's configure Skype to execute these scripts.

Open skype, go to menu -> options (Ctrl+o).

Choose the option "Notifications". Choose the Advanced view.

Choose "Call Answered" event and insert the path to "limit_upload_bandwidth.sh" as below:



Do the same for "Call Ended" and "Call Hungup", but insert the path to "restore_upload_bandwidth.sh" instead.



Apply the changes and happy video call!

No comments:

Post a Comment