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:
- Handbrake isn't the best tool for this, you should use ffmpeg instead.
- 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":
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