Remote Play Library and API
Project description
pyremoteplay
Python PlayStation Remote Play API
About
This project provides an API to programmatically connect to and control Remote Play hosts (PS4 and PS5). The low-level networking internals is written using the Asyncio framework. In addition it includes an optional GUI, allowing to view the live stream and control the host through keyboard/mouse input. This library is based on the C/C++ project Chiaki.
Features
- API to programatically control host and expose live audio/video stream
- Registering client for Remote Play on the host
- Interface for controlling the host, which emulates a DualShock controller
- Ability to power off/on the host if standby is enabled
- GUI which displays the live stream and supports keyboard/mouse input
- Support for controllers
Requirements
-
Python 3.8+
-
OS: Linux, Windows 10
-
Note: Untested on MacOS
Network Requirements
This project will only work with local devices; devices on the same local network. You may be able to connect with devices on different subnets, but this is not guaranteed.
GUI Dependencies
The GUI requires dependencies that may be complex to install. Below is a list of such dependencies.
- pyav (May require FFMPEG to be installed)
- PySide6
uvloop
is supported for the GUI and will be used if installed.
Installation
It is recommended to install in a virtual environment.
python3 -m venv .
source bin/activate
From pip
To install core package run:
pip install pyremoteplay
To install with optional GUI run:
pip install pyremoteplay[gui]
From Source
To Install from source, clone this repo and navigate to the top level directory.
pip install -r requirements.txt
python setup.py install
To Install GUI dependencies run:
pip install -r requirements-gui.txt
Setup
There are some steps that must be completed to use this library from a user standpoint.
- Registering a PSN Account
- Linking PSN Account and client to the Remote Play Host
Configuration files are saved in the .pyremoteplay
folder in the users home directory. Both the CLI and GUI utilize the same files.
CLI Setup
Registering and linking can be completed through the cli by following the prompts after using the below command:
pyremoteplay {host IP Address} --register
Replace {host IP Address}
with the IP Address of the Remote Play host.
GUI Setup
Registering and linking can be performed in the options screen.
Usage
To run the terminal only CLI use the following command:
pyremoteplay {host IP Address}
To run the GUI use the following command:
pyremoteplay-gui
Notes
- Video decoding is performed by the CPU by default. Hardware Decoding can be enabled in the options screen in the GUI.
- You may have to install
ffmpeg
with hardware decoding enabled and then installpyav
with the following command to allow for hardware decoding:pip install av --no-binary av
Baseline measurements
The CLI instance runs at 5-10% CPU usage with around 50Mb memory usage according to top
on this author's machine: ODroid N2.
Known Issues/To Do
- Text sending functions
- Add support for HDR
- Audio stutters
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyremoteplay-0.7.6.tar.gz
.
File metadata
- Download URL: pyremoteplay-0.7.6.tar.gz
- Upload date:
- Size: 141.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42e1558cf0d3f64f4f156d09d7e63b636c064f5d2a37c063e91dda1d76b77887 |
|
MD5 | eb562a21546c658133deadc20992ba84 |
|
BLAKE2b-256 | 3868168fcbe8cd5a2b2e37c7eab17e8dc0ffcb8c6a92e930ff18436221b5161a |
File details
Details for the file pyremoteplay-0.7.6-py3-none-any.whl
.
File metadata
- Download URL: pyremoteplay-0.7.6-py3-none-any.whl
- Upload date:
- Size: 154.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 12f645120abd613952aac50a21b3536f25b69753f567a52ed8fc39050d1c3a9c |
|
MD5 | 8c68071e0e4da04a85ff8efb405dc04d |
|
BLAKE2b-256 | 95c61ea12b30ec895f73cd1e4c2bac3d0c4686189167d5cfbf809ed0bcc13671 |