How do I convert WTV (and DVR-MS) files into a smaller standard format?

Please note: When this answer was written (July 2012), ffmpeg couldn't convert WTV files without loss of audio. However testing on ffmpeg 4.0.0 has shown that it now works fine and, as a result, there is no need to use wtvconverter.exe to pre-convert the WTV file to DVR-MS. As such:

ffmpeg -i "input.wtv" -y -filter:v yadif -vcodec libx264 -crf 23 "output.mp4"

should convert your television recording.

Original answer below

After some research it turns out that:

  1. Handbrake isn't the best tool for this, you should use ffmpeg instead.
  2. When using ffmpeg, you need to use the DVR-MS format (and not the WTV format) as the source file, otherwise you'll end up with no sound.

You need to perform a couple of steps, firstly converting from WTV to DVR-MS:

%WINDIR%\ehome\wtvconverter.exe "Recorded TV Show.wtv" "Recorded TV Show.dvr-ms"

Then converting that DVR-MS file to H.264/MPEG-4 AVC. You can change -crf 23 – higher numbers mean lower quality, sane values are from 19 to 25:

ffmpeg -i "Recorded TV Show.dvr-ms" -y -filter:v yadif -vcodec libx264 -crf 23 "Recorded TV Show.mp4"

Then deleting the temporary DVR-MS file:

del /F "Recorded TV Show.dvr-ms"

Once converted, VLC will give the following details about "Recorded TV Show.mp4":

enter image description here

The file I converted is now 530MB (down from 1.59GB) for 1 hour and 50 minutes of SD content. This means it is approximately 1/3rd of the size of the original WTV file.


I was able to get ffmpeg to do the trick, but took some time to find switches that worked. Not sure these are optimum, and the conversion takes a lot longer, BUT it is clean, plays everywhere I have tried, and the audio is correct and in sync.

ffmpeg -y -threads 8 -i pbsvideofile.wtv -target pal-dvd -deinterlace -async 48000  pbsvideofile.mpg