HowTo: Install HandBrakeCLI on your unRAID server (rather than in a VM)


Recommended Posts

Great work, thank you ClunkClunk for this. I am already transcoding the first VIDEO_TS folder.

Could I ask for a favor, though (from ClunkClunk or Joe)?

 

- would it be possible to define variables via unMenu like:

 

1. SOURCE PATH ____ (and here have a file browser to indicate where the source is)

2. DESTINATION PATH ____(once again file browser so the user does not make typo errors in writing the path)

3. PATH to THE PRESET FOLDER

4. HARD CODED PRESETS TO BE CHOSEN from a drop-down menu (the items of this menu will be collected from the preset files available at the previous path, i.e #3).

 

So, the scenario would be to go to the package manager at the unMenu, download, install and re-enable install after reboot. Define the paths and the preset mentioned above and click GO and have your transcoding done.

 

Am I asking too much? :)

 

config fields can be added, but unMENU only has one config field type.. a simple input field. 

unMENU's package manager does not have drop-down lists, or browseable input fields... at least not at this time.   

Since it it written in"awk" they could be added... if he was inclined... and I'd be happy to include the improvements in unMENU's official release, but for now, simple input fields will have to do.

 

Joe L.

Link to comment
  • Replies 115
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

I have tried my best and included some variables. The modified conf file has 4 input fields:

 

1. Source path (you could open the file browser in a new window and copy/paste your path here)

2. Destination path (you could open the file browser in a new window and copy/paste your path here)

3. Movie name

4. Preset for HandBrake (I have added a few predefined presets from HandBrake home site.)

 

Then you can save these variables and re-install the package using the default button. This creates a script called "handbrake.sh" under /boot/packages/ with the above variables. Using another user script, one could start the transcoding process, create a log file under the same directory and pass the output (Standard Error) of the HandBrakeCLI process to this log file.

 

If ClunkClunk does not mind and if needed, I can post them here.

Link to comment

Edited: I have modified and improved the conf file 4 times today in order to get rid of adding the user script manually. In the present form, conf file is the only one you need. It creates 3 user scripts and builds the related buttons in the user's script page to start/stop encoding and check the movie properties.

 

Ok, here we go. Please feel free to modify/improve.

 

Drop the conf file to /boot/packages. Go to the Package manager in unMenu, install the package. If it is already installed, then define the input variables, save and re-install with edited variables. Now you should have your handbrake.sh script built under /boot/packages

 

The conf file once reinstalled with edited user variables, creates 3 scripts (3333_unmenu_user_script_start_transcoding, 3333_unmenu_user_script_stop_transcoding and 3333_unmenu_user_script_start_properties) under /boot/unmenu. It checks for "handbrake.sh" and if that exists, creates a button called "start transcoding using HB" at the user's scripts page. Transcoding will be done at the background (nohup) and the Handbrake will exit when the job gets done. This script will also create a log file (hblog.txt), after removing the older one should this exists, and HandBrake will write the outcome to that. I have also added a few new config fields where you can choose you subtitle track no (in order to get the necessary info, you should run the user script created by the conf file (3334-unmenu_user_script_start_properties).

 

Nothing fancy really. However, an easy start if you are a beginner. You can start using transcoding without any need to learn commands, scripting or do a ssh to your server.

 

Hint: if you want to check the log file, just add it to the list of configurable files by adding the following line (EDITABLE_FILE = /boot/packages/hblog.txt) in "unmenu_local.conf"

 

PS: A more challenging and elegant way would be to add another input variable where the user could opt to transcode a single file (e.g. variable = 0) or multiple files ( variable = 1) from the defined source path. I could do this using the Joe's example earlier. However there an .iso image was used. I do not figure out how could one do a batch conversion using multiple video folders with various names and which contain VIDEO_TS subdirectory (like /mnt/user/films/MOVIE 1/VIDEO_TS, /mnt/user/films/MOVIE SOMETHING ELSE/VIDEO_TS and further on).

handbrake-unmenu-package.conf

Link to comment

The transcoding server listed in the User Customizations also uses HandBrake to transcode all identified files.  It contains options to find files automatically (cron) or to transcode them one at a time.

GJones, thank you for pointing out that thread, which i have overlooked earlier. That looks great. I think a dedicated package including all this stuff should be included in unMenu (like AirVideo). So a novice like me, opens the browser, runs the unMenu, clicks a few buttons and get the job done. You mention that you are very experienced with linux - in contrast to me, who virtually knows almost nothing about it :) - therefore, could you please take the challenge and with the support from others (like ClunkClunk, Joe, Prostuff1) build a package for unMenu? That should install Handbrake and include your tc and the related stuff. In addition to mkv files, also .iso and video_ts should be included. Doable?

Link to comment
  • 4 months later...

@aht961

 

Is there a way to keep the name of the original before encoded file and just re-use it when its done?

 

Ex.. Transformers.avi -> Transfomers.mp4 or .mpv

 

I am not quite sure if I understood your question. You can choose whatever you want for the name  - original or new.

Link to comment
  • 9 months later...

I know this is an old thread, but I was curious if anyone had compiled the newest HandbrakeCLI 0.9.6 for unRAID? If not, I could try to compile it myself following the directions in the beginning of this thread, unless one of the Linux gurus has a different approach. I'm having trouble with 0.9.5 not reading embedded subtitles in mounted blu-ray .iso files, and thought 0.9.6 might fix the issue.

 

EDIT: Well, I just realized I would need another machine to use as a build platform, and I don't have access to such resources. Is there anyone who has a 5.x series build environment running to compile unRAID packages?

Link to comment
  • 2 weeks later...

I took a quick glance at it, but the Slackware 12 virtual machine I used to build 0.9.5 wouldn't successfully build 0.9.6 or the snapshots. I have a pretty new baby in the house, so I haven't had much time to dig at it.

 

What did you end up doing, aiden? Did you get it compiled on unRAID 5.0? A Slackware install?

Link to comment

I have a pretty new baby in the house, so I haven't had much time to dig at it.

 

Well, first of all, CONGRATULATIONS! Those little bundles of joy really change your life and your perspective. :)

 

What did you end up doing, aiden? Did you get it compiled on unRAID 5.0? A Slackware install?

 

I don't have the experience to compile it from scratch, so I hobbled together what I could get from the internet. I used one of Alien's packages, and sourced the other dependencies through tracing errors. But it does work on 5.0 rc3.

 

I used the following code to get it working. I know I could build a .plg file and dump it in the extra directory, but I just haven't taken the time to do it. Plus, since this version still doesn't do what I need, I'm not finished yet.

wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/patches/packages/freetype-2.4.8-i486-1_slack13.1.txz
wget http://carroll.cac.psu.edu/pub/linux/distributions/slackware/slackware-13.1/slackware/x/fontconfig-2.8.0-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libogg-1.1.4-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libsamplerate-0.1.7-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libtheora-1.1.1-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libvorbis-1.2.3-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.37/slackware/l/zlib-1.2.5-i486-4.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/glib-1.2.10-i486-3.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.37/slackware/d/gcc-g++-4.5.2-i486-2.txz
wget http://www.slackware.com/~alien/slackbuilds/handbrake/pkg/13.37/handbrake-0.9.6-i486-1alien.tgz

upgradepkg --install-new freetype-2.4.8-i486-1_slack13.1.txz
upgradepkg --install-new fontconfig-2.8.0-i486-1.txz
upgradepkg --install-new libogg-1.1.4-i486-1.txz
upgradepkg --install-new libsamplerate-0.1.7-i486-1.txz
upgradepkg --install-new libtheora-1.1.1-i486-1.txz
upgradepkg --install-new libvorbis-1.2.3-i486-1.txz
upgradepkg --install-new zlib-1.2.5-i486-4.txz
upgradepkg --install-new glib-1.2.10-i486-3.txz
upgradepkg --install-new gcc-g++-4.5.2-i486-2.txz
upgradepkg --install-new handbrake-0.9.6-i486-1alien.tgz

Link to comment

I used the following code to get it working. I know I could build a .plg file and dump it in the extra directory, but I just haven't taken the time to do it. Plus, since this version still doesn't do what I need, I'm not finished yet.

 

I would be willing to build the plg file as a stop gap if you could provide me with some resources on how to accomplish that. I'm new to UnRAID and definitely a newbie when it comes to slackware, but I have experience with multiple other *nix operating systems.

 

Thanks for the installation info for Handbrake. You really saved me a lot of time.

Link to comment
  • 3 weeks later...
  • 2 weeks later...
  • 2 months later...

I haven't gotten around to doing anything with HandBrake and unRAID 5.0 (my unRAID server went from having one of the fastest CPUs in the house, to one of the slowest over the last few years, so it's not been a priority for me), but I think the install instructions will work to at least install 0.9.6, though it won't be a plugin.

Link to comment
  • 1 month later...

 

 

I don't have the experience to compile it from scratch, so I hobbled together what I could get from the internet. I used one of Alien's packages, and sourced the other dependencies through tracing errors. But it does work on 5.0 rc3.

 

I used the following code to get it working. I know I could build a .plg file and dump it in the extra directory, but I just haven't taken the time to do it. Plus, since this version still doesn't do what I need, I'm not finished yet.

wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/patches/packages/freetype-2.4.8-i486-1_slack13.1.txz
wget http://carroll.cac.psu.edu/pub/linux/distributions/slackware/slackware-13.1/slackware/x/fontconfig-2.8.0-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libogg-1.1.4-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libsamplerate-0.1.7-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libtheora-1.1.1-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/libvorbis-1.2.3-i486-1.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.37/slackware/l/zlib-1.2.5-i486-4.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.1/slackware/l/glib-1.2.10-i486-3.txz
wget http://slackware.cs.utah.edu/pub/slackware/slackware-13.37/slackware/d/gcc-g++-4.5.2-i486-2.txz
wget http://www.slackware.com/~alien/slackbuilds/handbrake/pkg/13.37/handbrake-0.9.6-i486-1alien.tgz

upgradepkg --install-new freetype-2.4.8-i486-1_slack13.1.txz
upgradepkg --install-new fontconfig-2.8.0-i486-1.txz
upgradepkg --install-new libogg-1.1.4-i486-1.txz
upgradepkg --install-new libsamplerate-0.1.7-i486-1.txz
upgradepkg --install-new libtheora-1.1.1-i486-1.txz
upgradepkg --install-new libvorbis-1.2.3-i486-1.txz
upgradepkg --install-new zlib-1.2.5-i486-4.txz
upgradepkg --install-new glib-1.2.10-i486-3.txz
upgradepkg --install-new gcc-g++-4.5.2-i486-2.txz
upgradepkg --install-new handbrake-0.9.6-i486-1alien.tgz

 

So can I simply run those commands in a terminal window and it will install Handbrake and all required dependencies?

Link to comment
  • 1 month later...

Thanks Andy, but I'm having some problems with this.

 

./handbrake.SlackBuild

 

HandBrake-0.9.8/make/.svn/props/
HandBrake-0.9.8/make/config.guess
HandBrake-0.9.8/make/xcodemake
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- HandBrake-0.9.6.orig/make/include/main.defs        2012-04-13 13:17:09.204577586 +0200
|+++ HandBrake-0.9.6/make/include/main.defs     2012-04-13 14:40:54.843931048 +0200
--------------------------
patching file make/include/main.defs
Using Plan A...
Hunk #1 succeeded at 16.
done
Building ...
./handbrake.SlackBuild: line 317: svn: command not found
./handbrake.SlackBuild FAILED at line 317

 

I also tried the package from Here, but get an error when I execute HandbrakeCLI

 

HandBrakeCLI: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

 

The package ClunkClunk was making worked without any other installpkg's. I'm fairly knowledgeable using Linux, but it's a life long learning process. Any suggestion is appreciated.

Link to comment

Thanks Andy, but I'm having some problems with this.

 

./handbrake.SlackBuild

 

HandBrake-0.9.8/make/.svn/props/
HandBrake-0.9.8/make/config.guess
HandBrake-0.9.8/make/xcodemake
Hmm...  Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- HandBrake-0.9.6.orig/make/include/main.defs        2012-04-13 13:17:09.204577586 +0200
|+++ HandBrake-0.9.6/make/include/main.defs     2012-04-13 14:40:54.843931048 +0200
--------------------------
patching file make/include/main.defs
Using Plan A...
Hunk #1 succeeded at 16.
done
Building ...
./handbrake.SlackBuild: line 317: svn: command not found
./handbrake.SlackBuild FAILED at line 317

 

I also tried the package from Here, but get an error when I execute HandbrakeCLI

 

HandBrakeCLI: error while loading shared libraries: libfontconfig.so.1: cannot open shared object file: No such file or directory

 

The package ClunkClunk was making worked without any other installpkg's. I'm fairly knowledgeable using Linux, but it's a life long learning process. Any suggestion is appreciated.

 

In regard to the second part of your post, the reason it's failing is that you don't have the required dependencies to run Handbrake.

 

Run the following to see the dependencies and whether or not you have them:

ldd /usr/bin/HandBrakeCLI

 

libfontconfig.so.1 can be found in the fontconfig package which can be found here:

http://slackbuilds.org/mirror/slackware/slackware-current/slackware/x/fontconfig-2.9.0-i486-1.txz

 

If you post the output of ldd, I can let you know where to get the other files.

Link to comment

I was able to get the the package handbrake-0.9.8-i486-1alien.txz to work using the dependencies listed in aiden's post (with some tweaks).

installpkg fontconfig-2.8.0-i486-1.txz
installpkg freetype-2.4.10-i486-1_slack13.1.txz
installpkg gcc-g++-4.5.2-i486-2.txz
installpkg glib-1.2.10-i486-3.txz
installpkg glibc-2.11.1-i486-7_slack13.1.txz
installpkg libogg-1.1.4-i486-1.txz
installpkg libsamplerate-0.1.7-i486-1.txz
installpkg libtheora-1.1.1-i486-1.txz
installpkg libvorbis-1.2.3-i486-1.txz
installpkg libxml2-2.7.6-i486-3_slack13.1.txz
installpkg zlib-1.2.5-i486-4.txz

 

I moved my HandBrakeCLI to /usr/local/bin/ to work with my queue scripts.

ldd /usr/local/bin/HandBrakeCLI
        linux-gate.so.1 =>  (0xb771a000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb76e6000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb766c000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0xb7667000)
        libsamplerate.so.0 => /usr/lib/libsamplerate.so.0 (0xb74fc000)
        libtheora.so.0 => /usr/lib/libtheora.so.0 (0xb74ab000)
        libtheoraenc.so.1 => /usr/lib/libtheoraenc.so.1 (0xb7468000)
        libtheoradec.so.1 => /usr/lib/libtheoradec.so.1 (0xb744f000)
        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xb7427000)
        libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0xb732e000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7208000)
        libbz2.so.1 => /lib/libbz2.so.1 (0xb71f7000)
        libz.so.1 => /usr/lib/libz.so.1 (0xb71e3000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb71ca000)
        libdl.so.2 => /lib/libdl.so.2 (0xb71c6000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb70dd000)
        libm.so.6 => /lib/libm.so.6 (0xb70b7000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb70ab000)
        libc.so.6 => /lib/libc.so.6 (0xb6f43000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6f23000)
        /lib/ld-linux.so.2 (0xb771b000)

 

This can work, but I'm interested in the settings ClunkClunk used to compile the earlier package that didn't need the extra libs.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.