2021-04-05 09:27:23 +00:00
|
|
|
# Hardware h264 encoding using vaapi
|
|
|
|
|
2021-04-07 12:51:58 +00:00
|
|
|
This plugin is a work in progress and use features not (yet) available in current version of Peertube.
|
|
|
|
You can use this fork: https://github.com/TheoLeCalvar/PeerTube
|
2021-04-05 09:27:23 +00:00
|
|
|
|
2021-04-07 12:51:58 +00:00
|
|
|
|
|
|
|
For more information on vaapi and hardware acceleration:
|
2021-04-05 09:27:23 +00:00
|
|
|
|
|
|
|
- https://jellyfin.org/docs/general/administration/hardware-acceleration.html#enabling-hardware-acceleration
|
2021-04-07 12:51:58 +00:00
|
|
|
- https://wiki.archlinux.org/index.php/Hardware_video_acceleration#Comparison_tables
|
|
|
|
|
|
|
|
|
|
|
|
# Building a compatible docker image
|
|
|
|
|
|
|
|
Official docker images do not ship with required libraries for hardware transcode.
|
2023-04-27 07:16:34 +00:00
|
|
|
You can build your own image with the following Dockerfile:
|
2021-04-07 12:51:58 +00:00
|
|
|
|
2023-04-27 07:16:34 +00:00
|
|
|
```Dockerfile
|
|
|
|
ARG VERSION=v4.2.0
|
|
|
|
FROM chocobozzz/peertube:${VERSION}-bullseye
|
2021-04-07 12:51:58 +00:00
|
|
|
|
|
|
|
|
2023-04-27 07:16:34 +00:00
|
|
|
# install dependencies for vaapi
|
|
|
|
RUN apt update \
|
|
|
|
&& apt install -y --no-install-recommends wget apt-transport-https \
|
|
|
|
&& echo "deb http://deb.debian.org/debian/ $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release ) non-free" | tee /etc/apt/sources.list.d/non-free.list \
|
|
|
|
&& apt update \
|
|
|
|
&& apt install -y --no-install-recommends vainfo i965-va-driver-shaders \
|
|
|
|
&& apt install -y --no-install-recommends python3 \
|
|
|
|
&& rm /var/lib/apt/lists/* -fR
|
2021-04-07 12:51:58 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
If you are using a recent Intel CPU (generation 8 and newer), replace `i965-va-driver-shaders` by `intel-media-va-driver-non-free`.
|
|
|
|
|
|
|
|
|
|
|
|
# Running the docker image
|
|
|
|
|
|
|
|
In order to access the GPU inside docker, the `docker-compose.yml` should be adapted as follow.
|
|
|
|
Note that you must find the id of the `render` group on your machine.
|
|
|
|
You can use `grep render /etc/group | cut -d':' -f3` to find the id.
|
|
|
|
|
2023-04-27 07:16:34 +00:00
|
|
|
|
2021-04-07 12:51:58 +00:00
|
|
|
```yaml
|
|
|
|
version: "2"
|
|
|
|
|
|
|
|
services:
|
|
|
|
peertube:
|
2023-04-27 07:16:34 +00:00
|
|
|
# replace image key with
|
|
|
|
build:
|
|
|
|
context: .
|
|
|
|
args:
|
|
|
|
VERSION: v5.0.1
|
|
|
|
# usual peertube configuration
|
|
|
|
# ...
|
|
|
|
|
|
|
|
# add these keys
|
2021-04-07 12:51:58 +00:00
|
|
|
group_add:
|
|
|
|
- <replace with the id of the render group>
|
|
|
|
devices:
|
|
|
|
# VAAPI Devices
|
|
|
|
- /dev/dri:/dev/dri
|
2023-04-27 07:16:34 +00:00
|
|
|
```
|