Skip to content

Commit 7d9c0f2

Browse files
committed
Added start of documentation
1 parent 4523c87 commit 7d9c0f2

File tree

2 files changed

+152
-0
lines changed

2 files changed

+152
-0
lines changed

Diff for: docs/docs/index.md

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# Plex Remote Transcoder
2+
3+
[![Join the chat at https://gitter.im/wnielson/Plex-Remote-Transcoder](https://badges.gitter.im/wnielson/Plex-Remote-Transcoder.svg)](https://gitter.im/wnielson/Plex-Remote-Transcoder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4+
5+
A distributed transcoding backend for Plex.
6+
7+
Please help by reporting bugs or with pull-requests.
8+
9+
For those interested in testing this out quickly, I've put together a step by
10+
step guide for getting this working on two Ubuntu machines. You can find the
11+
guide [here](https://github.com/wnielson/Plex-Remote-Transcoder/wiki/Ubuntu-Install).
12+
13+
Addtionally, for proposed features and some current limitations, check out
14+
[this page](https://github.com/wnielson/Plex-Remote-Transcoder/wiki/Improvements-&-Additional-Features).
15+
16+
!!! Warning
17+
Upgrading `Plex Media Server` often breaks things and it takes us some time to figure out what needs to be fixed. It is suggested that you avoid upgrading your Plex server before checking here first.
18+
19+
## Releases
20+
21+
The table below shows what version of `Plex Remote Transcoder` to use based off of which version of `Plex Media Server` you are currently running.
22+
23+
| Plex Media Server Version | Plex Remote Transcoder Version |
24+
|--------------|---------------------------|
25+
| `1.1.0.2611` | `master` ([zip](https://github.com/wnielson/Plex-Remote-Transcoder/archive/master.zip)) |
26+
| Below `1.1.0`| `0.3.5` ([zip](https://github.com/wnielson/Plex-Remote-Transcoder/archive/0.3.5.zip)) |
27+
| Below `1.0` | `0.2.2` ([zip](https://github.com/wnielson/Plex-Remote-Transcoder/archive/0.2.2.zip)) |
28+
29+
!!! Note
30+
If you are using a version of `Plex Media Server` not mentioned in the above table, you may encounter issues. If you do have issues, [please report them](https://github.com/wnielson/Plex-Remote-Transcoder/issues)!
31+
32+
## Contributing
33+
34+
Bug fixes/reports and feature requests are welcome! Either submit a pull request or create a new issue. There is also a [discussion board](https://gitter.im/wnielson/Plex-Remote-Transcoder).
35+
36+
## How Does it Work?
37+
38+
There have been quite a few projects attempting to load balance a Plex server,
39+
most of which involve proxying HTTP requests between multiple
40+
`Plex Media Server` (`PMS`) installations. This project takes a different, and
41+
arguably easier approach that simply involves running the `Plex New Transcoder`
42+
on a remote host. In this setup there is only ever **one** `PMS` installation
43+
(the `master` node), but there can be any number of transcode hosts (`slave`
44+
nodes). Since transcoding is typically the most processor intensive aspect of
45+
`PMS`, it makes sense to be able to distribute this workload among all available
46+
computing resources.
47+
48+
The way this works is by replacing the default `Plex New Transcoder` binary on
49+
the master `PMS` with a wrapper. This wrapper allows us to intercept the
50+
transcode request on the `master` node and send it to a transcode `slave` node.
51+
The transcode `slave` invokes the true `Plex New Transcoder` binary, does the
52+
(trans|en)coding and saves the video segments to a network mounted shared
53+
filesystem on the `master`. The `master` then sends these segments to the
54+
client and the video is played back just like normal.
55+
56+
## How is the Useful?
57+
58+
That depends. It may not be if you have a powerful `PMS` and/or very few
59+
simultaneous users/devices. If however you often see your main server being
60+
ground to halt because of the transcoder **and** you have access to additional
61+
computational capacity, this might be useful to you.
62+
63+
This approach also makes it possible, in theory, to take advantage of scalable
64+
computing via services like Amazon's ECS and Google's Compute Engine. By
65+
default you could have a dedicated, cheap instance (like ECS's `t2.micro`)
66+
running `PMS`, then when a user requests a stream, a larger ECS instance could
67+
be spawned to do the encoding. When the user is done watching, the extra ECS
68+
instance can be turned off, thereby saving you money.
69+
70+
## Help
71+
72+
Right now, things are pretty rough. Trying to figure out why something isn't
73+
working is difficult, but we're working on making this easier. Also,
74+
installation isn't easy and there are lots of places to make mistakes, we're
75+
working on that too.
76+
77+
## Configuration
78+
79+
The configuration file is located in a file named `~/.prt.conf`. It should be a
80+
valid `JSON` file and is created for you the first time you run `prt install`.
81+
Below is a list of some configuration options that can currently only be set
82+
by manually editing this file.
83+
84+
**`servers_script`**
85+
86+
This option can be used to specify the path to an executable that will return a
87+
list of currently available transcode `slave` node. It is called before every
88+
transcode request and should return a list of transcode nodes in the following
89+
format:
90+
91+
```
92+
hostname-1 22 plex
93+
hostname-2 22 plex
94+
```
95+
96+
where each line is a new host, consisting of three entries: the hostname or IP
97+
address, SSH port and SSH username.
98+
99+
**`path_script`**
100+
101+
This option can be used to specify the path to an executable that accepts a
102+
single argument at the command line and returns a single line to `stdout`. The
103+
single input parameter is the full path to the requested item to transcode. If
104+
the path is to be modified or changed, then the new path should be written back
105+
to `stdout`. A simple example in Python that simply returns the same path is
106+
given below.
107+
108+
```python
109+
#!/usr/bin/env python
110+
import sys
111+
112+
if len(sys.argv) > 1:
113+
path = sys.argv[1]
114+
sys.stdout.write(path)
115+
```
116+
117+
118+
**`logging`**
119+
120+
TODO: Document this.
121+
122+
## Contributors
123+
124+
* Weston Nielson (Owner) - wnielson@github
125+
* Andy Livingstone - liviynz@github
126+
127+
128+
## Donations
129+
130+
Some people have ask about how to dontate, so if you want to buy me a beer here are some links. Cheers!
131+
132+
[![Donate at https://patreon.com/wnielson](https://img.shields.io/badge/patreon-donate-yellow.svg)](https://patreon.com/wnielson)
133+
134+
[![Donate at https://www.paypal.me/wnielson](https://img.shields.io/badge/paypal-donate-yellow.svg)](https://www.paypal.me/wnielson)

Diff for: docs/mkdocs.yml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
site_name: Plex Remote Transcoder
2+
theme: 'material'
3+
markdown_extensions:
4+
- smarty
5+
- toc:
6+
permalink: True
7+
- sane_lists
8+
- admonition
9+
- codehilite(pygments_style=trac)
10+
- toc:
11+
permalink: True
12+
- fenced_code
13+
extra:
14+
author:
15+
github: 'wnielson'
16+
palette:
17+
primary: 'blue grey'
18+
accent: 'orange'

0 commit comments

Comments
 (0)