How to auto transcode MYTHTV recorded shows.
Introduction
The purpose of this documentation is to describe how to configure you Mythtv system to auto convert or transcode TV shows recorded using MythTV to DVD, XVID or DIVX cutting out the commercials. This documentation assumes that MYTHTV and MYTHWEB are already installed and running correctly.
Step 1: Install dependencies for nuvexport.
Code:
sudo apt-get install mjpegtools libdbix-profile-perl libdate-manip-perl
Step 2: Build ffmpeg with the xvid and other formats.
Code:
Follow these instructions
Step 3: Create a directory for nuvexport.
Code:
mkdir nuvexport
Step 4: Change into nuvexport.
Code:
cd nuvexport
Step 5: Grab nuvexport.
Code:
wget http://www.forevermore.net/files/nuv...latest.tar.bz2
NOTE: When MythTV 0.21 is released nuvexport will be integrated into MYTHTV.
Step 6: Extract.
Code:
tar jxvf nuvexport-latest.tar.bz2
Step 7: Change into extracted directory.
Code:
cd nuvexport-*
Step 8: Install nuvexport.
Code:
sudo make install
Step 9: Test the output quality manually.
Before setting up the automated transcoding of your recorded shows run nuvexport manually a few times and play with the quality settings to suit your needs.
- Login as the user that you have mythtv running.
- From the command line run nuvexport.
Code:
nuvexport
- step through the prompts.
- remember the quality settings that you like, better write them down. I've included the settings that I use below in my nuvexportrc.
Step 10: Edit nuvexportrc
Code:
sudo gedit /etc/nuvexportrc
Step 11: Change Settings in the nuvexportrc.
NOTE: Below is my nuvexportrc. Change your nuvexportrc to match mine or tweak the quality settings in your nuvexportrc to suit your needs (see step9). Also you might want to change the output path from "path = /media/videos/converted_tv" to something that you prefer.
Code:
<nuvexport> export_prog=ffmpeg # mode=divx underscores=yes # require_cutlist=yes # # By default, nuvexport picks what it thinks is a good name for your file # (doing its best to avoid printing "Untitled" into the filename). Setting # name will let you change the output format of the filename generated by # nuvexport. Even after this formatting, nuvexport will still do some basic # replacements to make sure that illegal filename characters (eg. /\:*?<>|) # are replaced with a dash (or " with a '). The following format variables # are supported: # # %f -> full path to the filename # %c -> the chanid of the show # %a -> start time in YYYYMMDDHHMMSS format # %b -> end time in YYYYMMDDHHMMSS format # %t -> title (show name) # %s -> subtitle (episode name) # %h -> hostname where the file resides # %m -> showtime in human-readable format (see --date below) # %d -> description # %% -> a % character # # filename=%t_-_%s_(%m) # # By default, nuvexport uses an American-style date to represent showtimes in # lists and filenames. Use --date to override that with the format of your # choosing. See the UnixDate section `perldoc Date::Manip` for formatting # options. # # date=%m/%d, %i:%M %p date=%m.%d.%y # # Nuvexport has the option to crop a percentage of the border of each recording # in order to get rid of the unsightly edges of the tv signal. The default 2% # approximates the overscan of an average TV, but you can alter this from 0 to # 5% to fit your preferences. Please keep in mind that this amount is removed # prior to making any aspect conversions like removing black bars from 4:3 # recordings to make a 16:9 export. # crop_pct = 2 # # Alternatively, you can override the general crop_pct to crop a different # amount from specific sides of the recording. # # crop_top = 2 # crop_right = 2 # crop_bottom = 2 # crop_left = 2 </nuvexport> # # The sections below work as above, with each more specific section overriding # the more generic. # <generic> # # Default to export to the current directory # path = /media/videos/converted_tv # # Use the cutlist (not to be confused with the commercial flag list) when # exporting. # use_cutlist = yes # # Tell mythcommflag to generate a cutlist from the commercial flags before # exporting. Don't forget to enable use_cutlist above, too. # # gencutlist = yes # # Contrary to popular belief, enabling multipass will not make your recordings # look better. What it will do, however is guarantee that the bitrate you # choose will be the average bitrate of your entire encode (meaning that your # exports will end up being about the same size per-minute), and that you # will receive the best overall quality for a files of the same size. # multipass = no # # Disabling noise reduction can speed up your exports dramatically, but at the # expense of some quality. You can also access this on the commandline via # the --denoise (or --nodenoise) flag. # noise_reduction = no # # Deinterlace the video so that it looks better on software players. # deinterlace = yes # # Crop about 2% from the border of the recording before encoding. This is done # to get rid of part of the broadcast signal that is usually obscured by the # tv's overscan. # crop = yes # # You can create settings for each export module type. These are the # second-most generic sections, and will only be reached if there are no # matches in the full or generic module names. # # If you have a particularly dirty signal, you might want to try to disable # fast_denoise (it's actually part of yuvdenoise, which both the ffmpeg # and transcode exporters call). It can be almost twice as slow as the # default "fast" normal noise reduction, but it considerably more effective. # The latest version of yuvdenoise (which is called directly by the ffmpeg # exporters) does not support this option, so it is ignored in that case. # fast_denoise = no # # If nuvexport is having trouble detecting the *input* aspect ratio of your # recordings (MythTV used to hard-code all software-encoded files as 1:1 # regardless of the true aspect), set this option to one of the following: # # force_aspect = [ 1:1 4:3 16:9 2.21:1 ] </generic> <ffmpeg> # # ffmpeg is almost twice as fast if you disable noise reduction # # noise_reduction = no # # By default, nuvexport's ffmpeg module lets ffmpeg handle deinterlacing. # I've found that this provides the best results, but if you wish to let # yuvdenoise do it instead, set deint_in_yuvdenoise to a true value. # # deint_in_yuvdenoise = no # </ffmpeg> <transcode> # # Mythtranscode will always be used for nupplevideo recordings because # transcode can't read them, but setting force_mythtranscode to yes will # force nuvexport to call mythtranscode when using the transcode exporter for # mpeg recordings, too. This may help problems that some people have been # having with transcode not recognizing certain dvb recordings, as well as # transcode not working properly on certain ivtv recordings. # force_mythtranscode = yes # # Setting both force_mythtranscode and mythtranscode_cutlist to yes will tell # nuvexport to use mythtranscode's built-in cutlist functions, rather than # having transcode use its own. I've found that the cutlists for a handful # of ivtv recordings that do not work properly with transcode's internal # cutlist handler. # mythtranscode_cutlist = yes </transcode> <mencoder> </mencoder> # # You can also create settings for generic export module names. These will # only be overridden by full module names. # <XviD> vbr = yes # Enable vbr to get the multipass/quantisation options # (enabling multipass or quantisation automatically enables vbr) multipass = no # You get either multipass or quantisation; multipass will override quantisation = 3 # 4 through 6 is probably right... 1..31 are allowed (lower is better quality) a_bitrate = 256 # Audio bitrate of 256 kbps v_bitrate = 4500 # Remember, quantisation overrides video bitrate width = 624 # Height adjusts automatically to width, according to aspect ratio height = auto </XviD> <DIVX> vbr = yes # Enable vbr to get the multipass/quantisation options # (enabling multipass or quantisation automatically enables vbr) multipass = no # You get either multipass or quantisation; multipass will override quantisation = 2 # 4 through 6 is probably right... 1..31 are allowed (lower is better quality) a_bitrate = 256 # Audio bitrate of 256 kbps v_bitrate = 4500 # Remember, quantisation overrides video bitrate width = 624 # Height adjusts automatically to width, according to aspect ratio height = auto </DIVX> <DVD> vbr = yes # Enable vbr to get the multipass/quantisation options # (enabling multipass or quantisation automatically enables vbr) multipass = no # You get either multipass or quantisation; multipass will override quantisation = 2 # 4 through 6 is probably right... 1..31 are allowed (lower is better quality) a_bitrate = 256 # Audio bitrate of 256 kbps v_bitrate = 4500 # Remember, quantisation overrides video bitrate width = 624 # Height adjusts automatically to width, according to aspect ratio height = auto </DVD> # # Default mp3 bitrate in MythTV is 128 # <MP3> bitrate = 256 </MP3> # # If you want to provide settings for a very specific export module, you can # use its full name, and it will override any more generic settings. # # # The MP4 encoder for ffmpeg has a couple of options unique to itself # <ffmpeg::MP4> # Codec to use (mpeg4 or h264). Please note that h264 support requires the # SVN version of ffmpeg (not CVS!). In fact, even the mpeg4 codec works # better with the SVN version. mp4_codec = mpeg4 # Framerate to use: auto, 25, 23.97, 29.97. PAL will always be 25 fps, and # auto will set 29.97 for everything over 320x288 and 23.97 for the rest. mp4_fps = auto </ffmpeg::MP4> # # As does the PSP exporter # <ffmpeg::PSP> # PSP framerate (high=29.97, low=14.985) psp_fps = low # PSP resolution (320x240, 368x208 or 400x192) psp_resolution = 320x240 # PSP video bitrate (high=768, low=384) psp_bitrate = high # Create a thumbnail to go with the PSP video export? psp_thumbnail = yes </ffmpeg::PSP> # # You can also add flags to the one and only mencoder option # <mencoder::XviD> multipass = no </mencoder::XviD> # # You can also make specific profiles called with the --profile parameter that # will override other config options (but not commandline arguments). # # For example, you could make a profile that would encode your favorite show # with your favorite settings. # <profile::sample> title = test export_prog = transcode mode = xvid confirm = true </profile::sample>
Step 12: Open a browser to your MythWeb.
The following is assuming that MythWeb is running on your MythTV box. The same process can be run from the MythTV box while logged in as your mythtv user. Run mythtv-setup and navigate to the last page of the General section until you see the "User Jobs."
Click on the "Edit MythWeb and MythTV Settings" button (i.e. the Key and the Wrench).
- Click on the link "MythTV settings table."
Scroll down to the UserJob1.
- Enter the following.
Code:
nuvexport-xvid --nice 19 --input="%FILE%"
Now enter a Description for UserJob1 under the setting UserJobDesc1 (i.e. Convert to XVID).
Scroll to the UserJob2.
Code:
nuvexport-divx --nice 19 --input="%FILE%"
Now enter a Description for UserJob2 under the setting UserJobDesc2 (i.e. Convert to DIVX).
Scroll to the UserJob3.
Code:
nuvexport-dvd --nice 19 --input="%FILE%"
Now enter a Description for UserJob3 under the setting UserJobDesc3(i.e. Convert to DVD).
Step 13: Set your scheduled shows to auto transcode.
From MythWeb click on "Recording Schedules (Manual, Custom)"
- Click on one of your scheduled shows.
- On the right side under "Schedule Options:" make sure that "Auto-flag commercials:" has a check next to it.
- Just under the "Auto-transcode:" option you should now see the three options that you specified in step 12 (i.e. Convert to XVID, Convert to DIVX, and Convert to DVD). Select one to auto trancode your show.
- Repeat Step 13 for other shows that you wish to auto transcode.