ref #1516
Refactored the code that generates the video file used in the presentation playback. The problem with the sync of video sources was related to problems of precision inside FFmpeg (sometimes the script runs FFmpeg to trim video files, and the output video file trimmed sometimes was 3+ seconds bigger or smaller than the requested).
Also it's a little more modular, so it will be easier to expand functionality. The processing steps are more explicit now, and the logs are better now to understand the final output.
A new parameter on presentation.yml was added to enable the admin to add an offset for the audio stream - this is mainly useful when the session ran with h264, because the video takes longer for the client to encode, and then in the recording we can see the huge gap between audio and video.
rap-worker now keeps track of the processing time of a recording; a file called processing_time is generated during the process phase, and this information is added to metadata.xml when the recording is published - this information isn't retrieved by getRecordings because no modification was done on bbb-web to include this information, but at least it's there so the sysadmin can check how long does a recording take to get processed
enabling audio_offset tested for h264
modified the BigBlueButton.execute method so it can raise an exception when the command passed didn't finish successfully; you can optionally pass fail_on_error=false so it won't raise an exception
extracted FFMPEG_LOG_LEVEL to a module constant, and use it in all FFmpeg commands; now it's easy to increase the log level during development
implemented the possibility to include the desktop sharing streams to the presentation playback; it composes the presentation video file just like the other video streams, with the difference that while the screen is being sharing, it appears as the unique video stream in the presentation video - when the presenter stops sharing his screen, the other videos populate the video display;
also, the output video resolution is modified to the highest screen resolution shared during the conference, independently on the output video resolution set by the user; it was done to preserve the quality of the desktop sharing image; if there's no desktop sharing, the output video resolution is respected
fixing the incorrect handling of the last timeline event on video processing
Merge branch 'master' of git://github.com/bigbluebutton/bigbluebutton into sync-playback
Merge branch 'master' of github.com:bigbluebutton/bigbluebutton into sync-playback
Merge pull request #208 from fcecagno/sync-playback

Sync playback