Ripbot264 Distributed Encoding

By | August 6, 2012

I’ve been using Ripbot264 to encode DVDs and, more recently, Blu-rays for a few years now.  I won’t call myself an expert or anything, but I am well versed in it by now.  Despite Ripbot’s progressions and increasing features, I’ve pretty much maintained the same simplified usage of it as I did in its initial releases.  After all, if you just want good quality at smaller file sizes, it does that well with little configuration.  Well, my lack of tinkering with it ceased a couple of releases ago as an exciting new feature was included – Distributed Encoding.

Ripbot264 Distributed Encoding allows us to benefit from having multiple systems around the house by harnessing those extra CPU cycles and putting them to use – distributing the workload and allowing those extra systems to join in on the encode party!  So far, I’ve done around a half-dozen DVDs using a single client and single server (two systems) and the performance increase has been quite substantial to me.  This post is to act as a guide to help you set up your own distributed encoding network using the Ripbot264 engine.

The reason that I felt it necessary to create a guide is because there is no real documentation on how to set it all up.  There is a YouTube video tutorial, but it is set to music, and there is absolutely no real direction to the video.  I’m sure if you’re technically-minded enough, you could figure out how to set this all up using the video (I did, afterall), but it took me some trial and error to figure out a few steps.  I hope to walk you through it all – beginning to end.

First of all, I’m not going to walk you through installing Ripbot264.  I believe you are all competent enough for that.  I’ll explain a few of my specific configurations as they pertain to distributed encoding, but that’s about it for Ripbot264 usage.  I will begin the guide assuming you currently have a working install of Ripbot264 and now I will explain my specific install as it pertains to the distributed encoding feature:

  • My Ripbot264 installation directory resides in C:\Program Files (x86)\Ripbot264 as I’m on a Windows 7 64-bit system.
  • My Ripbot264.ini file has the TEMP directory set to X; therefore my true temp directory path is X:\Temp\Ripbot264temp.  This is important as you will need to correlate my directions to your own true temp directory path.
  • All systems used within the distributed encoding network MUST USE THE SAME VERSION of Ripbot264.  I also highly suggest you use the same versions of ffdshow, Java, AviSynth, etc. that the application requires.

Now, let’s move on with our guide with that out of the way.  The first thing we want to do is begin on our client system.  This is the system where you will initiate the encodes…it should also probably be where the files you want to encode reside.  Locate your Ripbot264 installation folder and open the Ripbot264.ini file contained within using Notepad or something.  At the very bottom of the file, you should see the entry

UseDistributedEncoding=0

You will want to change that “0″ to a “1″ and then save and close the ini file (you may need administrative permissions for this if you use UAC, but I’ll let you figure that out).  That is the initial step to enable the distributed encoding client for use.  All the other stuff in the ini file can be changed also, but that’s outside the scope of this guide.  They are for setting default values within the application and are not necessary to modify…I do, but I digress.

Advanced sharing settingsLeave your Ripbot264 installation directory open, but minimize it…we will visit it later.  Now we have to change some advanced sharing options, so let’s visit the Network and Sharing Center (remember, I’m on Win7).  In the left-hand column, we want to visit the Change advanced sharing settings link, so do that.  We have a single option to change, so scroll towards the bottom.  We’re looking for the Password protected sharing section and we’re going to turn it off.  Now, let me also say, Ripbot264 does include provisions for using password protected shares, but I’m not covering that.  My home network doesn’t need them, so I don’t care so much about disabling this.  If you require them, I don’t think it will take much work for you to figure out how to do it with the supplied options in the ini files.  If you want to dig around in that client ini, you will also see there are accommodations for Wake On LAN support of target servers.  Nice!  Anyway, disable the password protected sharing and save your changes.

Password protected sharing Password protected sharing

Next, we will need to create the temp directory as it currently doesn’t exist if you’re on a new install.  If you left your default temp directory alone, then you are using the system specified temp directory.  Let’s go there by typing %TEMP% in the Windows run box.  You should get a directory similar to C:\Users\<USERNAME>\AppData\Local\Temp open up in Explorer.  Within this directory, create a new directory named Ripbot264temp.  Again, you may need admin privileges for this…figure it out.  What we want to do now is share this directory out since this is where our work files go when creating a new job.  So, right click your new directory and choose Share with > Specific people…

Share Ripbot264temp Share the directory

Now we need to share this directory with specified users.  If you know what you’re doing, you can make this a bit more secure than this by adding specific users (this can also go along with the password protected sharing), but I have to assume you don’t in order to avoid answering a billion questions in the comments later.  So, click the drop down and add  Everyone to the shared users list.

Share with Everyone Share with Everyone

We’re not done yet though…the permissions are no good.  Our additional servers will need Read/Write access to this directory, so change that also before clicking the Share button.

Add Read/Write permissions Add Read/Write permissions

Click the Share button and you should have a successfully shared Ripbot264temp directory in your default, or specified, location.  You should have something similar to this:

Properly shared temp directory Properly shared temp directory

Cool, now for the fun stuff.  If you don’t run Windows Firewall, this will be pretty easy as you won’t get any prompts.  If you do run Windows Firewall, you will get some prompts, so just pay attention and things won’t be difficult.  If you run any other type of desktop firewall, you may be in for a time if it’s not interactive with newly detected connections.  Anyway, let’s move along and get this part out of the way.  The system(s) we want to go to first are our additional encoding servers.  These should already have a properly installed and working Ripbot264 installation.  It doesn’t have to be configured…just detected as a working installation (launch it and make sure all prerequisites are met).  Now, for each server, go to the installation directory and find the EncodingServer.exe executable.  Launch it.  My server is running Windows 2008 Server R2, so my firewall notification box looks different than Win 7, but you will get something similar to this:

Firewall DE server notice Firewall DE server notice

You will want toAllow access to this so that it can be added to the firewall exception list.  For Win 7, the box looks like this:

Firewall allow DE server Win7 Firewall allow DE server Win7

Leave the encoding server running on all systems.  It will probably be residing in your system tray…just make note of it for later.

Now, let’s go to our primary system – the encoding client.  Locate the Ripbot264.exe in your install directory (we left it open) and launch it.  Surprise!  If you are running Windows Firewall, you will have received another notice of the encoding server needing access…it will look just like one of the two images above (2008 Server R2 or Win 7), so grant it access.  You are now faced with the standard Ripbot264 application and it’s ready for you to add a new job.  As I said, I’m not detailing that, so go ahead and add whatever it is you want to encode and get it ready until you have a new job listed in your queue.

Job ready in queue Job ready in queue

Great..click Start and wait for it…

Allow encoding client in firewall Allow encoding client in firewall

As with the encoding server application, the encoding client needs firewall access also, so allow it.  If everything else went well, your encoding client will copy files to the share and start working.  Unfortunately, it’s flying solo right now as we have not defined any of our servers yet.

Encoding client solo Encoding client solo

So, let’s add our servers…remember, the encoding server MUST be running on all systems that will be aiding here or the connection will fail.  It’s a graceful failure though, so it won’t ruin your job.  Under Server 2 on the encoding client interface, type in the IP address of the first encoding server system and click the ON button.  After  a few seconds, you should see it take off:

Encoding client with help Encoding client with help

For each running server you have, just enter the IP and hit that ON button…new chunks will be sent out and you will enjoy the extra time saved.  From the server side, you should see something similar to this:

Encoding server working Encoding server working

One other little nice feature I happened upon while doing this guide was what happens when you click the Abort button.  It allows you to save your spot!

Save progress Save progress

Well, that’s about it.  Of course, the time saved depends on things such as how powerful your systems are and how many you have working.  I haven’t run any comparison tests yet, but I use a 3.2GHz quad-core Core2Quad and a 2.4Ghz Core2Duo system and have seen very significant decreases in encoding time needed to completion.  The quality of the results are just as they have been expected in the years I have used Ripbot264 – excellent.

Anyway, hope this helps some of you.  Below is the YouTube tutorial I used to drive myself insane while figuring all this out.  Maybe the two in conjunction will make it even easier for you.

 

14 thoughts on “Ripbot264 Distributed Encoding

  1. J.T.

    Hi thx for tutorial but I really need help, please. I have PC (base-10.10.10.10:1000) and Notebook (server-10.10.10.10:2000). The PC is connected to Notebook via ethernet from the switcher. I have one Internet provider = one IP adress for both machines. Between PC and Notebook I have established home group. I have done all what you write down in this tutorial – on my PC – but distributed encoding not working. Even encoding on my PC not working. What should I do on my Notebook? Turn on only EncodingServer.exe and wait? – not working Is there any step by step tutorial for stupid people like me, anywhere?? Please help me out. I trying this distributed encoding since RipBot264 v1.17.1

    Reply
    1. Jon Post author

      I went as step-by-step as I could. First thing I would do, however, is get the encoding working on one system first. If you can’t even get that going, you have larger problems in your setup.

      Reply
      1. J.T.

        I did this:
        StoreTempFilesin=C -> in RipBot264.ini (default)
        UseDistributedEncoding=1 -> in RipBot264.ini
        Server1=10.10.10.10:1000 -> in EncodingClient.ini
        Password protected sharing: disabled -> in Control Panel
        Start RipBot264 v1.17.3 [RipBot264temp is created in C:\Temp]
        *Share RipBot264temp in C:\Temp as is shown in video by ataksnajpera*
        Options: Everyone ; permissions: Full Control/Read/Write
        Add network drive X: -> in Map Network Drive
        Folder path of drive X: is \\COMPUTER\RipBot264temp so when I create job1 its placed in C:\Temp\RipBot264temp ergo is accessable in X:\ at the same time. Now I can start encoding. First of all audio track is encoded in RipBot264.exe, then EncodingClient.exe and EncodingServer.exe are launched. EncodingClient.exe copy/move/index some folders etc. EncodingServer.exe connects to PC IP Adress. And then EncodingClient.exe starts to encode video track. Everything is working just fine except Distributed Encoding. IP Adress of my PC is 10:10:10:10 (with 100% CPU usage) and IP of Notebook is 10:10:10:11 (with 0% CPU usage = connection is missing) Job1 is finished only by PC. Question is: what to do next to enable distributed encoding via Notebook??

        *as you can see I skipped the “Let’s go there by typing %TEMP%… part of your guide because of this Indexing Error [http://goo.gl/NFkta] According to your tutorial, RipBot264temp path will be C:\Users\\AppData\Local\Temp not C:\Temp and this brings me to the ERROR = no encoding, so I followed developer’s instructions and encoding works, but main problem still remains. (running win 7 32bit)

        Any idea ?? pls help

        Reply
        1. Jon Post author

          Are you launching the encoding server on the laptop so that it can listen for the connection?

          Good point about the TEMP directory also. I don’t like using the root of C: for that since UAC can interfere…guess I need to update for that.

          Reply
          1. J.T.

            Yes, that’s it !! Good point, btw. Thank you very much for your support. I will worship you instead of god..

    1. Jon Post author

      I think you’ll find it works very well…let us know how it worked out for you!

      Reply
  2. Smint

    I cant get the distributed encoding working, followed the youtube video and your guide, but the ripbot encoding client stays idle, server 1 and 2 have the green light, but the status and frames window is empty so no work is being sent. My video still encodes but it all happens in the main Ripbot window as a regular solo encode.
    I did enable UseDistributedEncoding=1 in the ini file and everything is allowed in the firewall, my temp folder seems to be ok with sharing enabled with read/write on, password disabled.
    Very disappointed as i think i did everything right, tried on both of my pcs with exactly the same result.

    Reply
    1. Jon Post author

      It’s hard to say, but there has to be something somewhere you’re missing or configuring incorrectly. I won’t say for a second that it’s easy to setup though. There’s not much to it, but if anything is done incorrectly or missed, it definitely won’t work. Disable firewall on both systems and try again. Make sure encoding server is running on the “helper” system – not the client.

      Reply
    2. Marvin

      Supported input formats AVI / MP4 / MKV / DVD / HD-DVD / Blu-ray
      everything else dont work with distributed.

      Reply
  3. Pablo

    Thanks for the useful guide.

    Hopefully I will save someone some time…

    I had a problem where my server machine would constantly switch between Encoding and Ecoding Terminated and my client would flick between encoding and idle.

    I found the problem was that the shared folder that I had created using the instructions above was not being used. I had to look in the encoding server window to find the output location – once this was identified and set-up to share the server could access the folder and start to contribute to the encoding.

    I’m glad I found this page – the doom 9 forum has 500+ pages and is impossible to find any good information from.

    Peace

    Reply
  4. Ronski

    Fantastic write up, I even got it working with passwords. I gave up when it was first introduced, I didn’t have the time to try and fathom out the video, or to try & follow questions/answers in the forum thread, this programs needs a whole forum section to itself really.

    Couple of things I’ve noticed though.

    1. Distributed encoding only works on jobs that have been added after distributed encoding was enabled.
    2. Add all jobs prior to starting encoding, adding jobs whilst encoding really slowed things down, painfully slow – no idea why, CPU usage was minimal.

    Thanks for the write up, I’ve suggested the author links to this, so it actually has some instructions, otherwise it’s a fantastic program.

    Reply
  5. Freddy

    Can anyone chime in on how many additional servers I should be running on a single cpu with multiple cores? I currently use a i7-3770k which does 8 threads… I’ve tested that 3 servers take it to 100%, but I’m unsure if between 3-4 since for seems to add more fps or am I just being fooled into thinking its doing more?

    Reply
    1. moose

      if you only have 1 pc with a single CPU then you dont need to use distributed encoding, ripbot will work normally and use all your cores without it, if you have multiple computers then each computer would register as another server.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

Powered by sweet Captcha