Windows Media Center – Recorded TV

Having purchased a NAS server recently, I wanted to ‘record’ DVB TV from windows media center onto the NAS Server disks rather than locally, so recorded programs would be available via DLNA.

Much to my surprise, I couldn’t setup MCE to do this, and any nas compatible options were not compatible with my DVB-S USB stick, so, I worked around this.

Using a command script/batch file, and windows scheduler, I’ve been able to schedule a recording in the TV Guide, then convert and copy to the NAS Drive in a DLNA compatible format!

At first, I started using SyncToy, but changed this later on as it wasn’t really needed.

The script works as follows:

  1. Moves the MCE wtv file to a temporary directory if it’ not in use (i.e a recording currently taking place)
  2. In the temp directory, converts to DVR-MS, and then to MPEG via FFMPEG
  3. Moves the MP4 to a target folder on the NAS Server.

Then I create a schedule that starts on bootup, and runs every hour after.  The script also logs out to a logfile so that you can see what happens during schedule execution.

The end result, I can schedule a recording within the guide, and within an hour of completion of the program, this is available on the NAS Server via DLNA to my smart TV.

So, here it is.
To make this work, you’ll need to modify the configuration, and grab a copy off FFMPEG.


@echo off

rem ___________________________________________________________________________
rem
rem Configurable Settings
rem ___________________________________________________________________________

set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%
set LOGFILE=c:\scripts\moveTV\moveTV_%datetimef%.log

set TEMPTV=c:\scripts\moveTV\temp
set MCERECORDEDTV=C:\Users\Public\Recorded TV
set WTVCONVERTER=C:\Windows\ehome\wtvconverter.exe
set FFMPEG=C:\Scripts\ffmpeg\bin\ffmpeg.exe
set TARGET=\\homenas\multimedia\My Videos\Recorded TV
set LOCKFILE=C:\Scripts\moveTV\lockfile

rem ___________________________________________________________________________
rem
rem Check Lockfile
rem If lockfile exists (script still running) then terminate
rem else create the lockfile
rem ___________________________________________________________________________
rem

echo Checking lockfile
if exist %LOCKFILE% GOTO TERMINATE

echo Running > %LOCKFILE%
date /T >> %LOCKFILE%
time /T >> %LOCKFILE%

rem ___________________________________________________________________________
rem
rem Roll over log file
rem If we're on the 1st of the month start a new logfile
rem ___________________________________________________________________________
rem

set DATE=%date%
set DAY=%DATE:~0,2%
echo %DAY%

set TIME=%time%
set TIMe=%TIME:~-0,2%
echo %TIME%

rem Delete any log files older than 3 days
for /f "skip=3 eol=: delims=" %%F in ('dir /b /o-d moveTV*.log') do @del "%%F"

rem ___________________________________________________________________________
rem
rem Initilise
rem ___________________________________________________________________________

echo.
echo +-------------------------------------+
echo   Transfer Recorded TV to NAS Server  
echo +-------------------------------------+
echo.

echo. >> %LOGFILE%
echo == Started Transfer of TV ============
echo == Started Transfer of TV ============ >> %LOGFILE%
echo Start Date:
date /T
time /T
date /T >> %LOGFILE%
time /T >> %LOGFILE%

rem ___________________________________________________________________________
rem
rem Move recorded TV to temp directory for conversion
rem ___________________________________________________________________________

for %%f in ("%MCERECORDEDTV%\*.wtv") do (
  echo Checking File: %%~nf
  (
    type nul >> "%MCERECORDEDTV%\%%~nf.wtv"
  ) 2>nul && move "%MCERECORDEDTV%\%%~nf.wtv" "%TEMPTV%" >> %LOGFILE% || echo File %%~nf.wtv Skipped - Is currently in use >> %LOGFILE%
  
)

echo Moved Files to Temporary Location

rem ___________________________________________________________________________
rem
rem Move Convert *.WTV files in the temp directory to dvr-ms and then MP4
rem ___________________________________________________________________________

for %%f in ("%TEMPTV%\*.wtv") do (

  echo Converting File: %%~nf
  echo Converting File: %%~nf >> %LOGFILE%
  echo ---------------------------------------------------------------
  %WTVCONVERTER% "%TEMPTV%\%%~nf.wtv" "%TEMPTV%\%%~nf.dvr-ms"  >> %LOGFILE%
  rem %FFMPEG% -i "%TEMPTV%\%%~nf.dvr-ms" -y -filter:v yadif -vcodec libx264 -crf 15 "%TEMPTV%\%%~nf.mp4" >> %LOGFILE%
  %FFMPEG% -y -i "%TEMPTV%\%%~nf.dvr-ms" -vcodec copy -acodec copy -f dvd "%TEMPTV%\%%~nf.mpg" >> %LOGFILE%
  echo Conversion Complete - deleting original DVRMS and WTV
  echo File %%~nf Conversion complete
  echo Conversion of File: %%~nf Complete >> %LOGFILE%
  echo Moving File: %%~nf.mpg to %TARGET%
  echo Moving File: %%~nf.mpg to %TARGET% >> %LOGFILE%
  move /Y "%TEMPTV%\%%~nf.mpg" "%TARGET%"

  
  rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  rem !!!!! Delete the recorded MCE program? !!!!!
  rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  del "%MCERECORDEDTV%\%%~nf.wtv"

  rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  echo.
  echo ---------------------------------------------------------------
)

echo Sync Complete

rem ___________________________________________________________________________
rem
rem Cleanup files in the temp folder and the 'recorded tv folder' if needed
rem ___________________________________________________________________________

echo Cleanup of converted files

del "%TEMPTV%\*.dvr-ms"
del "%TEMPTV%\*.wtv"
del "%TEMPTV%\*.mpg"

echo.

del %LOCKFILE%

GOTO END

rem ___________________________________________________________________________
rem
rem FUNCTIONS
rem ___________________________________________________________________________

:TERMINATE
echo LOCKFILE exists... terminating

rem ___________________________________________________________________________
rem
rem END
rem ___________________________________________________________________________

:END
time /T
time /T >> %LOGFILE%
echo *** Done ***
echo *** Done *** >> %LOGFILE%

If you find this useful, please just let me know with a thanks 😉

Leave a Reply

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