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.py
file, 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 Python
scroll down to the bottom of the tree and make sureAdd python.exe to Path
is 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.py
to . 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.py
file from theplex_transcoder_probesize_x86.zip
above or copy and paste the code below into a new file. An easy way to do this is to typenotepad source.py
in that same command prompt window, then clickingYes
to 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
dist
folder 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.txt
file from the zip in the post above.