Maxim i made some changes to the code, i downloaded the source on the server, changed the lines with nano. and then from the mainfolder simply ran the ant command and it started compiling (albeit some errors appeared since i only entered "ant" without any options/parameters.
Openmeeting is working fine, i simply replaced the entire screenshareing/ folder with the new one i just compiled... any suggestions on what im doing wrong here? I am getting this error: Unsigned Entry in resouce: slf4j-api-1.6.4.jar On Thu, Oct 24, 2013 at 8:17 AM, Maxim Solodovnik <solomax...@gmail.com>wrote: > I'm currently trying to modify the code to get 20+ fps (was requested many > times, but I had no time on this :( currently I'm on vacation, will try to > implement it) > > > On Thu, Oct 24, 2013 at 10:02 AM, Alexander Brovman < > alexander.brov...@gmail.com> wrote: > >> Maxim, >> >> Thank you for responding so quickly. The primary reason i asked is >> because we sometimes need to output data like Financial Stock charts or >> similar dynamic content and in a resolution size of 1650x1080. As you can >> imagine right now the delay is.. manageable, perhaps somewhere along the >> lines of 0.5-1 second delay id say. >> We had an independant tested saying its an average of 130ms. But for fast >> video/changes the framerate will sometimes drop or become laggy. >> >> Ill try setting the timebetweenFrames to 30ms which in "ideal" conditions >> should give me 33.333 frames per second of video. >> As for the Thread.Sleep(XXX) not working or functioning i will remove the >> thread.sleep(60) from the top, >> As for the Thread.Sleep(xxx) settings i will simply remove it; BUT i will >> leave in the "Thread.sleep(Math.max(0, timeBetweenFrames - spent));" since >> "worst" case scenario it will not be put to sleep at all since the output >> will be 0, and "best case" scenario the thread will be put to sleep for 30 >> - 1 ms depending on how the calculation turns out. >> >> Perhaps it would be good to leave somekind of thread sleep in there that >> is a static factor, from a development standpoint i would rather prefer >> having a fixed constant in there. rather than putting the thread to sleep >> (potentially twice). Either that or im not understanding the reason for the >> first thread.sleep (or the second one). >> Either way i will make the changes now and compile, I will report my >> findings here if you want me to :) >> >> @Sebastian, >> >> At the time of writing this i saw you respond, so i am writing this short >> addendum: >> 1) Could you please comment on whether or not Thread.Sleep(xxx) works? >> 2) 2-4 frames per second and less may be great for static presentations >> but not so much for dynamic. I understand the concerns raised on your >> behalf regarding bandwidth usage but since we have a dedicated Gigabit >> connection we have no issues with dedicating anywhere between 2-5 Mbit per >> user. 20 Frames per second really is the minimum we are looking at, i think >> it would be great if you presented people with an option/alternative to >> gotowebinar. I understand that applications which compile into native code >> will always be faster and outperform in certain aspects, but when you have >> the motivation and perhaps the financial resources to dedicate time and >> money into getting away from solutions such as GoToWebinar. >> >> Is there a way of "fixing" the position of the screen that the viewers >> will see when they accept a desktop streaming broadcast from a presenter? I >> ask this because i havent found a way to change the location of the Chat >> Bar inside a conference room yet (neither have I found a way to change the >> colors/themes to be honest, need to do some more google searches). >> >> Kind regards, >> Alexander >> >> >> >> On Thu, Oct 24, 2013 at 4:47 AM, seba.wag...@gmail.com < >> seba.wag...@gmail.com> wrote: >> >>> Do we still have the super high quality setting in the sharing client? >>> My problems in the past was more around the bandwidth issues then the >>> FPS. >>> If you do 2-4 FPS the bandwidth usage will go that up... there is >>> probably a trick, maybe there is also something todo in the way the tiles >>> are calculated that need to be resend. It normally should only try to >>> resend the ones that really change. So if you show an hd movie you might >>> see your bandwidth needs go up quite a bit. >>> >>> Seb >>> >>> >>> 2013/10/24 Maxim Solodovnik <solomax...@gmail.com> >>> >>>> Hello Alexander, >>>> >>>> Your findings are correct :) >>>> With the only exception: Screenshots are taken in single thread, so >>>> there are some limitations in the speed :( >>>> I believe Thread.sleep(xxx) doesn't work at all >>>> I'm planning to rewrite this part And hopefully will be able to >>>> increase FPS. >>>> >>>> Basic compilation steps are here: >>>> http://openmeetings.apache.org/BuildInstructions.html >>>> After compiling all jars in screensharing folders are being signed, so >>>> you need to replace all of them, otherwise you will get security error due >>>> to different certificates >>>> >>>> >>>> >>>> On Thu, Oct 24, 2013 at 3:07 AM, Alexander Brovman < >>>> alexander.brov...@gmail.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> I have two quick questions, but first of all i just wanted to say that >>>>> Openmeetings is fantastic. I had both OpenMeetings and BBB Installed and >>>>> we >>>>> have decided to go with OM. >>>>> >>>>> I am relatively apt at programming with Python and C# but I have never >>>>> worked with a lot of Javaapplications like these ones, so i have the >>>>> following questions: >>>>> >>>>> *1)* From what i understand the ScreenSharing is performed by taking >>>>> snapshots every x milliseconds. Additionally there is an algorithm in >>>>> place >>>>> that divides the snapshot into tiles and measures the changes in tiles, if >>>>> there is a change the tile is uploaded. If this is correct, and i want a >>>>> more.. "fluid" video because there will be a lot of changes, cant i simply >>>>> modify the "framerate" at which the images will be compared to improve the >>>>> output? I am well aware that this would eat into the CPU and the bandwidth >>>>> but i have a Full Duplex Gbit and 2x Quadcore Xeons available to me so >>>>> this >>>>> is not an issue. We are trying to test for an extreme case of 500-1500 >>>>> users and how to optimize the output, i think the developers and other >>>>> users will be interested in seeing the results. >>>>> >>>>> >>>>> *2)* Where would these changes need to be made? So far i have >>>>> isolated the CoreScreen.java , CaptureScreen.java and >>>>> theScreenV1Encoder.java files that apparently contain the code which >>>>> processes the desktop sharing. >>>>> >>>>> The CaptureScreen.Java has the: >>>>> "timeBetweenFrames = (ScreenDimensions.quality == >>>>> ScreenQuality.VeryHigh) ? 100 : 500;" setting on line 54 which basically >>>>> says that if Screequality is set to very high (condition is true) then >>>>> select 100 as the value for timeBetweenFrames. >>>>> >>>>> This variable is apparently used lateron in the >>>>> "Thread.sleep(Math.max(0, timeBetweenFrames - spent));" on line 96, which >>>>> will pause the current loop for the amountof time that is the difference >>>>> between timeBetweenFrames( in our case 100ms) minus the spent time (which >>>>> is defined on line 91). >>>>> >>>>> So in Theory if i wanted to output the screen in realtime at 20 or 24 >>>>> frames per second which would mean that a snapshot would need to be taken >>>>> every 50 milliseconds or so, would i simply need to set a different frame >>>>> setting for the time between frames, something like: >>>>> "timeBetweenFrames = (ScreenDimensions.quality == >>>>> ScreenQuality.VeryHigh) ? *20* : 500;" >>>>> >>>>> Reduce the Thread.sleep(60); on line 60 to something like 20 >>>>> milliseconds so (Thread.sleep(20);) >>>>> and then finally remove the the last part "Thread.sleep(Math.max(0, >>>>> timeBetweenFrames - spent));" or perhaps leaving it in? >>>>> >>>>> I understand that this would be a .. "wrench and hammer" approach >>>>> since this will probably eat up quite a bit of CPU usage. I mean the >>>>> simpler solution here clearly would be to get rid of the algorithm itself >>>>> and simply rewrite it to simply output a screenshot every x milliseconds >>>>> or >>>>> so, but i have no idea how deep i would be messing with openmeetings and >>>>> if >>>>> that would/could break other parts of openmeeting that access these files? >>>>> >>>>> So would this be a workable solution that i could at least try out? I >>>>> would ofcourse be more than happy to supply the CPU Usage differences. >>>>> >>>>> *3)* My only question would be is how would i recompile these? I am >>>>> asking because i read somewhere in the mailinglists (or the old google >>>>> groups) that it is recommended to use ANT in order to recompile things. >>>>> Also what will be the output name of the .jar that is essentially being >>>>> loaded for people and located on the server? >>>>> Because all i can find on my Debian box is >>>>> the >>>>> /usr/lib/red5/webapps/openmeetings/screensharing/openmeetings-screenshare-2.1.1-RELEASE.jar >>>>> file. >>>>> >>>>> So yeah, if somebody could help me with recompiling i would appreciate >>>>> it! :) >>>>> >>>> >>>> >>>> >>>> -- >>>> WBR >>>> Maxim aka solomax >>>> >>> >>> >>> >>> -- >>> Sebastian Wagner >>> https://twitter.com/#!/dead_lock >>> http://www.webbase-design.de >>> http://www.wagner-sebastian.com >>> seba.wag...@gmail.com >>> >> >> > > > -- > WBR > Maxim aka solomax >