This repository contains the dedicated encoder service for AVideo. It is responsible for ingesting media, managing encoding jobs, generating derivatives, and sending processed media back to an AVideo streamer instance.
AVideo is an open source video platform that lets you run your own video site, import content from supported providers, and manage transcoding on your own infrastructure.
- Dedicated encoding queue for the AVideo platform
- FFmpeg-based video and audio processing
- Import support for remote media sources and video platforms
- Dockerized deployment option
- GitHub Actions workflows for linting, tests, security analysis, and Docker image publishing
- Official site: avideo.tube
- Main platform repository: WWBN/AVideo
- Public encoder: encoder.avideo.com
- Encoder network: AVideo Encoder Network
- Installation tutorial: Streamer and Encoder tutorial
I would humbly like to thank God for giving me the necessary knowledge, motivation, resources and idea to be able to execute this project. Without God's permission this would never be possible.
For of Him, and through Him, and to Him, are all things: to whom be glory for ever. Amen.
Apostle Paul in Romans 11:36
This Software must be used for Good, never Evil. It is expressly forbidden to use AVideo to build porn sites, violence, racism or anything else that affects human integrity or denigrates the image of anyone.
The streamer can run on multiple environments, including Windows, but the encoder is designed around Linux tooling and shell access. A Linux server with administrative access is strongly recommended. Hosting panels such as cPanel, Plesk, Webmin, and similar environments can block required system-level dependencies or command execution. For production deployments, prefer a VPS or dedicated server where you control the operating system packages and services.
I do not want to read, I just want installation instructions.
Start here: https://tutorials.avideo.com/video/streamer-and-encoder
https://streamphp.com/services
You should install the encoder when:
- You want private or dedicated transcoding capacity
- Your infrastructure is faster than the public encoder service
- Your streamer is on a private network or behind a firewall
- Your server does not expose a public IP address
The public encoder cannot reliably push media back to streamer instances that are only reachable through private address space such as:
- 10.0.0.0/8
- 127.0.0.0/8 (Localhost)
- 172.16.0.0/12
- 192.168.0.0/16
In these cases, a private encoder installation is required.
Go get it here
The repository depends on operating system tools in addition to PHP application code. Based on the current codebase and Docker image, the practical requirements are:
- Linux server with shell access
- Apache 2.x with
mod_rewriteenabled - PHP 8.1+ for current CI coverage
- MySQL or MariaDB
- FFmpeg and FFprobe
- Python 3
yt-dlpexiftool- PHP command execution functions such as
execandshell_exec
Note: the current Dockerfile still uses a legacy
php:7-apachebase image even though the repository CI validates PHP 8.1 to 8.3. If you rely on Docker for production, treat the image definition as a compatibility item that should be reviewed separately.
Since version 4.x, the streamer and encoder are separated so they can be deployed independently.
- The streamer site is the main user-facing application.
- The encoder site is responsible for queueing and processing media conversions.
- You can use the public encoder service or operate your own private encoder infrastructure.
- A private encoder is the recommended choice when you need predictable throughput, network isolation, or infrastructure-level control.
If you want the old version with Streamer and Encoder together (Version 3.4.1) download it here
This repository includes a Docker environment for the AVideo Encoder. You can build the image directly from this repository or pull a published image when available.
The container can be configured through environment variables that mirror the installer options:
SERVER_NAMEdefines the name of the server used for internal configuration - default islocalhostSERVER_URLdefines the external URL of the encoder - default ishttps://localhost/DB_MYSQL_HOSTdefines the database hostname - default isdatabaseDB_MYSQL_PORTdefines the database port - default is3306DB_MYSQL_NAMEdefines the database name - default isavideoDB_MYSQL_USERdefines the database username - default isavideoDB_MYSQL_PASSWORDdefines the database password - default isavideoSTREAMER_URLdefines the streamer url - default ishttps://localhost/STREAMER_USERdefines the streamer username - default isadminSTREAMER_PASSWORDdefines the streamer password - default ispasswordSTREAMER_PRIORITYdefines the streamer priority - default is1CREATE_TLS_CERTIFICATEdefines, if the image should generate its ssl selfsigned certificate - default isyesTLS_CERTIFICATE_FILEdefines the location of the HTTPS tls certificate - default is/etc/apache2/ssl/localhost.crtTLS_CERTIFICATE_KEYdefines the location of the HTTPS tls certificate key - default is/etc/apache2/ssl/localhost.keyCONTACT_EMAILdefines the contact mail address - default isadmin@localhostPHP_POST_MAX_SIZEdefines the PHP max POST size for uploads - default is100MPHP_UPLOAD_MAX_FILESIZEdefines the PHP max upload file size - default is100MPHP_MAX_EXECUTION_TIMEdefines the PHP max execution time for threads during encoding - default is7200PHP_MEMORY_LIMITdefines the PHP memory limit - default is512M
