/PyStream

Video streaming using FastAPI

Primary LanguagePythonMIT LicenseMIT

Deployments

book pypi none-shall-pass

PyPI version shields.io Pypi-format Pypi-status

PyStream

Python module to, stream videos via authenticated sessions using FastAPI

Install

pip install stream-localhost

Sample Usage

import asyncio
import os
import pystream

if __name__ == '__main__':
    kwargs = dict(
        authorization={"Alan Turing": "Pr0gRamM1ng", "Linus Torvalds": "LinuxOS"},
        video_source=os.path.join(os.path.expanduser('~'), 'Downloads')
    )
    # Add the following to host on local IP address, skip for localhost (127.0.0.1)
    # kwargs["video_host"] = pystream.utils.get_local_ip()
    asyncio.run(pystream.start(**kwargs))

Env Variables

💡   Environment variables can (optionally) be loaded from any plain text file.
Refer the wiki page for more information.

Mandatory

  • AUTHORIZATION: Dictionary of key-value pairs with username as key and password as value.
  • VIDEO_SOURCE: Source path for video files.

💡   Files starting with _ (underscore) and . (dot) will be ignored

Optional

  • VIDEO_HOST: IP address to host the video. Defaults to 127.0.0.1
  • VIDEO_PORT: Port number to host the application. Defaults to 8000
  • FILE_FORMATS: Sequence of supported video file formats. Defaults to (.mp4, .mov)
  • WORKERS: Number of workers to spin up the uvicorn server. Defaults to 1
  • WEBSITES: List of websites (supports regex) to add to CORS configuration. Required only if tunneled via CDN
  • AUTO_THUMBNAIL: Boolean flag to auto generate thumbnail images for preview. Defaults to True
  • KEY_FILE: Path to the private key file for SSL certificate. Defaults to None
  • CERT_FILE: Path to the full chain file for SSL certificate. Defaults to None
  • SECURE_SESSION: Boolean flag to secure the cookie session_token. Defaults to False

💡   If SECURE_SESSION to set to true, the cookie session_token will only be sent via HTTPS
This means that the server can ONLY be hosted via HTTPS or localhost

Coding Standards

Docstring format: Google
Styling conventions: PEP 8 and isort

Requirement

pip install gitverse

Usage

gitverse-release reverse -f release_notes.rst -t 'Release Notes'

Linting

pre-commit will ensure linting, run pytest, generate runbook & release notes, and validate hyperlinks in ALL markdown files (including Wiki pages)

Requirement

pip install sphinx==5.1.1 pre-commit recommonmark

Usage

pre-commit run --all-files

Pypi Package

pypi-module

https://pypi.org/project/stream-localhost/

Runbook

made-with-sphinx-doc

https://thevickypedia.github.io/PyStream/

License & copyright

© Vignesh Rao

Licensed under the MIT License