Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Suggestion : "offline encoding&q...

2010-04-25
2013-06-03
  • Hi,

    Currently, unless you encode on the fly, RecordMyDesktop will record data from the screen, then encode it into a standard format.  The first step is not cpu-consuming, while the second is much.  However, there are some situations when you want to be able to record several small subsets in a relatively short time, and the encoding step becomes painful if you have an old cpu.

    Since version 0.3.7, RecordMyDesktop has a "rescue" option, which allows the user to recover files from a sessions which gone bad.  A solution to the above-mentioned problem would be to include an option allowing to save raw data and not to encode it at the end of the record, and to use the rescue option to encode saved data later.  This should not be too difficult to implement.

    Another solution would be to implement a "pause" command stopping the acquisition for a while.  However this would probably be more difficult to implement, and not as satisfying IMO.

    Thanks for this useful tool anyway.

     
  • DodgeV83
    DodgeV83
    2010-05-07

    I was able to accomplish this by editing the source code.  Unfortunately, the -rescue option on the newest 0.3.8.X releases aren't working, so use the 0.3.7.3 version for this.

    Download it here:

    http://sourceforge.net/projects/recordmydesktop/files/recordmydesktop/0.3.7.3/recordmydesktop-0.3.7.3.tar.gz/download

    Extract it and edit this file in the /src directory:

    recordmydesktop.c

    Edit these lines in the file:

                //encode and then cleanup cache
                if(!pdata.args.encOnTheFly && !pdata.args.no_encode){
                    if(!Aborted){
             ---> Added comment lines here "//"           //EncodeCache(&pdata);
                    }
                    fprintf(stderr,"Cleanning up cache...\n");
         ---> Added comment lines here "//"               //if(PurgeCache(pdata.cache_data,!pdata.args.nosound))
            ---> Added comment lines here "//"             //   fprintf(stderr,"Some error occured "
        ---> Added comment lines here "//"                   //             "while cleaning up cache!\n");
    

    This will remove the "encode" step when you stop a recording.  The recording will stop immediately and say "DONE!!!"  The tmp files are now sitting patiently, waiting for you to run recordmydesktop -rescue on them.

    Move one folder up from /src and run

    ./configure

    sudo make

    sudo make install

    You will need to install some extra packages on the way, there are instructions around here on how to do this here:

    http://www.64studio.com/node/704

    If you get any errors about a specific library, install the "-dev" for that library.  For example, if your error says something about libvorbis, do a sudo apt-get install libvorbin-dev

    Compile the code with this change and a new recordmydesktop executable will be placed in the /src folder.  You can either run it from there, or rename it to "recordmydesktopnocompress" for example and copy it to /usr/bin to be run from any terminal.  You can also replace the normal "recordmydesktop" from /usr/bin if you want to use it with the gtk-recordmydesktop GUI.

    Good luck!

     
  • DodgeV83
    DodgeV83
    2010-05-07

    Hmm, I can't edit the previous post, and it completely messed up the formatting on the code, so here it is again.  Just make sure this section of your recordmydesktop.c file looks like this:

    //encode and then cleanup cache
                if(!pdata.args.encOnTheFly && !pdata.args.no_encode){
                    if(!Aborted){
                        //EncodeCache(&pdata);
                    }
                    fprintf(stderr,"Cleanning up cache…\n");
                    //if(PurgeCache(pdata.cache_data,!pdata.args.nosound))
                     //   fprintf(stderr,"Some error occured "
                       //             "while cleaning up cache!\n");
                    fprintf(stderr,"Done!!!\n");
                }