ISSUE: Leaves tuner occupied when closing stream/recording. Unusable for Windows (unless you have it permanently tuned to a channel.
Step by step for generating your own ‘Plex Transcoder.exe’ -probesize python fix, as included in the ‘plex_transcoder_probesize_x86.zip’ from above.
This is for x86 Plex only. If you are installing everything as 32-bit, you’ll have to make edits to the
source.pyfile, and most likely install the 32-bit version of python.
INSTALL PYTHON
- Download Python 2.7 (latest 2.7.x)
Python Release Python 2.7.16 | Python.org - In most cases, you’ll be downloading
Windows x86-64 MSI installer. - Install
for all users(recommended). Click ‘Next’. - Leave default install location alone (
C:\Python27\). Click ‘Next’. - Under
Customize Pythonscroll down to the bottom of the tree and make sureAdd python.exe to Pathis clicked and set toWill be installed on local hard drive. Click ‘Next’. - Windows may open an ‘allow’ dialog in the background, so if nothing pops up, check your taskbar for a blinking option waiting to be clicked.
INSTALL PIP (small package manager that will install ‘pyinstaller’)
- Download get-pip.py [
https://bootstrap.pypa.io/get-pip.py] to a folder on your computer, I recommend creating a folder on your desktop called ‘TranscoderFix’. Open a command prompt window and navigate to that folder (cd Desktop\TranscoderFix) or whatever folder you downloadedget-pip.pyto . Then runpython get-pip.py. This will installpip.
INSTALL pyinstaller (this is what takes the python script and turns it into a standalone .exe file)
- In the same command prompt, now that PIP has been installed you should now be able to run
pip install pyinstaller.
GET THE SCRIPT READY
- Either use the
source.pyfile from theplex_transcoder_probesize_x86.zipabove or copy and paste the code below into a new file. An easy way to do this is to typenotepad source.pyin that same command prompt window, then clickingYesto create a new file.
#!"C:\Python27\python.exe"
import sys
from sys import argv
import subprocess
# Tell this shim where the 'real' Plex Transcoder is
#cmd = '/Applications/Plex Media Server.app/Contents/MacOS/plex_transcoder' # for mac
#cmd = '/usr/lib/plexmediaserver/plex_transcoder' # for linux/ubuntu
cmd = "C:\Program Files (x86)\Plex\Plex Media Server\plex_transcoder.exe" # windows 64-bit
#cmd = "C:\Program Files\Plex\Plex Media Server\plex_transcoder.exe" # windows 32-bit
# Get all arguments passed to what it thinks is the original 'Plex Transcoder'
cmdargs = sys.argv
# Remove the first argument (the script/program name itself)
cmdargs.pop(0)
# Initialize the argument counter
cmdindex=0
# Loop through all arguments and modify them as needed
# - remove arguments that when passed to the original 'Plex Transcoder' error it out.
for cmdarg in cmdargs:
# lower the '-probesize' so that it keeps us under the timeout limit of PMS
if cmdarg == "-probesize":
cmdargs[cmdindex+1]="9000000" # was 20000000
# remove offending arguments
if cmdarg == "-x264opts:0" or cmdarg == "-crf:0" or cmdarg == "-preset:0":
cmdargs[cmdindex]=""
# escape single quotes in arguments
cmdargs[cmdindex]=str(cmdarg).replace("'", "\\'")
# bump up the counter for the next loop
cmdindex += 1
target = [cmd] + cmdargs
subprocess.call(target)
GENERATE THE EXE
- In that same folder that now contains
source.py, you can now runpyinstaller --onefile source.py. - If all went well, you can now look under the newly created
distfolder and you’ll have your newsource.exe. If renaming in Windows Explorer, you won’t see the ‘.exe’ extension, just the name. - You can now rename
'source'to'Plex Transcoder'. - You can now use this instead of the included ‘Plex Transcoder’ included in the zip.
- DO NOT just blindly copy this new ‘Plex Transcoder’ executable anywhere. Follow instructions included in the
README.txtfile from the zip in the post above.