linuxserver / docker-tvheadend

GNU General Public License v3.0
158 stars 87 forks source link

[BUG] d1366a06-ls152 broke vaapi amd transcoding on FC38 host #235

Closed bartekuk closed 8 months ago

bartekuk commented 1 year ago

Is there an existing issue for this?

Current Behavior

Using latest or any after d1366a06-ls152 version of docker image (fresh build with latest master tvheadend) as well as repo image fails to stream using tvheadend hardware AMD transcode, stream fails (default settings, 2500kbps bandwidth) on FC37 & FC38 host giving following error in container log:

tvheadend_1     | 2023-07-03 15:18:10.531 [   INFO] vaapi: Bitrate = 2500 kbps; Buffer size = 45000 kbps; Max bitrate = 0 kbps
tvheadend_1     | 2023-07-03 15:18:10.531 [  ERROR] libav: AVHWDeviceContext: Failed to initialise VAAPI connection: -1 (unknown libva error).
tvheadend_1     | 2023-07-03 15:18:10.531 [  ERROR] vaapi: failed to create a context for device: /dev/dri/renderD128

Expected Behavior

If I downgrade the build to previous tag 02987438-ls151 freshly build image (as well as repo) streams fine

tvheadend_1     | 2023-07-03 15:39:45.550 [   INFO] vaapi: Bitrate = 2500 kbps; Buffer size = 45000 kbps; Max bitrate = 0 kbps
tvheadend_1     | 2023-07-03 15:39:45.564 [WARNING] libav: AVCodecContext: Driver does not support some wanted packed headers (wanted 0xd, found 0x1).

Steps To Reproduce

  1. with FC 36 or 38 host (not tested on other) on AMD64
  2. run d1366a06-ls152 or later docker-tvheadend
  3. configure streaming to AMD (vaapi) 2500kbps defaults
  4. stream TV content from tvheadend web interface (https://IP:9198)

Environment

- OS: FC 36, 38
- repo image using docker-compose as well as local builds (with latest tvheadend)

CPU architecture

x86-64

Docker creation

docker-compose.yml

services:
  tvheadend:
    image: ghcr.io/linuxserver/tvheadend:localbuild
    build: https://github.com/linuxserver/docker-tvheadend.git#d1366a06-ls152
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - LC_ALL=en_GB.UTF8
    volumes:
      - ./tvheadend:/config
    ports:
      - 9981:9981
      - 9982:9982
    devices:
      - /dev/dri:/dev/dri 
      - /dev/dvb:/dev/dvb

Container logs

tvheadend_1     | [migrations] started
tvheadend_1     | [migrations] no migrations found
tvheadend_1     | ───────────────────────────────────────
tvheadend_1     |   _____ __ __ _____ _____ _____ _____
tvheadend_1     |  |     |  |  |   __|_   _|     |     |
tvheadend_1     |  |   --|  |  |__   | | | |  |  | | | |
tvheadend_1     |  |_____|_____|_____| |_| |_____|_|_|_|
tvheadend_1     |        _____ __ __ _ __    ____
tvheadend_1     |       | __  |  |  | |  |  |    \
tvheadend_1     |       | __ -|  |  | |  |__|  |  |
tvheadend_1     |       |_____|_____|_|_____|____/
tvheadend_1     |
tvheadend_1     |   Based on images from linuxserver.io
tvheadend_1     | ───────────────────────────────────────
tvheadend_1     |
tvheadend_1     | To support LSIO projects visit:
tvheadend_1     | https://www.linuxserver.io/donate/
tvheadend_1     |
tvheadend_1     | ───────────────────────────────────────
tvheadend_1     | GID/UID
tvheadend_1     | ───────────────────────────────────────
tvheadend_1     |
tvheadend_1     | User UID:    1000
tvheadend_1     | User GID:    1000
tvheadend_1     | ───────────────────────────────────────
tvheadend_1     |
tvheadend_1     | Setting permissions
tvheadend_1     | [custom-init] No custom files found, skipping...
tvheadend_1     | 2023-07-03 15:58:43.122 [   INFO] main: Log started
tvheadend_1     | 2023-07-03 15:58:43.122 [   INFO] config: Using configuration from '/config'
tvheadend_1     | 2023-07-03 15:58:43.122 [   INFO] http: Starting HTTP server 0.0.0.0:9981
tvheadend_1     | 2023-07-03 15:58:43.122 [   INFO] htsp: Starting HTSP server 0.0.0.0:9982
tvheadend_1     | 2023-07-03 15:58:43.153 [   INFO] config: loaded
tvheadend_1     | 2023-07-03 15:58:43.153 [   INFO] config: scanfile (re)initialization with path <none>
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: 'video' context type registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: 'audio' context type registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHH264Decoder' decoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHTHEORADecoder' decoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHAACDecoder' decoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHVORBISDecoder' decoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHOPUSDecoder' decoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHMPEG2VIDEOEncoder' encoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHH264Encoder' encoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHHEVCEncoder' encoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.154 [   INFO] transcode: '&TVHAACEncoder' encoder helper registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'mpeg2video' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'mp2' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'aac' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'vorbis' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'flac' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libx264' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libx265' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libvpx' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libvpx-vp9' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libtheora' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libvorbis' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'libopus' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'h264_vaapi' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'hevc_vaapi' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'vp8_vaapi' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'vp9_vaapi' encoder registered
tvheadend_1     | 2023-07-03 15:58:43.160 [   INFO] codec: 'webtv-vorbis' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'hd-rec' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'webtv-vp8' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'webtv-h264-q24' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'webtv-h264' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'webtv-aac' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.161 [   INFO] codec: 'hd' codec profile created
tvheadend_1     | 2023-07-03 15:58:43.166 [   INFO] descrambler: adding CAID 2600/FFFF as ConstCW interval 10000ms pc 20 ep default (BISS)
tvheadend_1     | 2023-07-03 15:58:43.166 [   INFO] descrambler: adding CAID 0E00/FFFF as MultiPID interval 1000ms pc 2 ep default (PowerVu)
tvheadend_1     | 2023-07-03 15:58:43.176 [   INFO] iptv: Using 2 input thread(s)
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: DVB-S - loaded 1 regions with 116 networks
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: DVB-T - loaded 46 regions with 1134 networks
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: DVB-C - loaded 20 regions with 82 networks
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: ATSC-T - loaded 2 regions with 13 networks
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: ATSC-C - loaded 1 regions with 5 networks
tvheadend_1     | 2023-07-03 15:58:43.433 [   INFO] scanfile: ISDB-T - loaded 2 regions with 1297 networks
tvheadend_1     | 2023-07-03 15:58:43.645 [   INFO] linuxdvb: adapter added /dev/dvb/adapter0
tvheadend_1     | 2023-07-03 15:58:43.655 [   INFO] dvr: Creating new configuration ''
tvheadend_1     | 2023-07-03 15:58:43.655 [   INFO] dvr: Creating new configuration 'Low res recording'
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module uk_freesat created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module uk_freesat_eit created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module uk_freeview created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module nz_freeview2 created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module nz_freeview1 created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module viasat_baltic created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module Bulsatcom_39E created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module uk_cable_virgin created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module eit created
tvheadend_1     | 2023-07-03 15:58:43.657 [   INFO] epggrab: module psip created
tvheadend_1     | 2023-07-03 15:58:43.664 [   INFO] epggrab: module opentv-ausat created
tvheadend_1     | 2023-07-03 15:58:43.665 [   INFO] epggrab: module opentv-skyit created
tvheadend_1     | 2023-07-03 15:58:43.666 [   INFO] epggrab: module opentv-skynz created
tvheadend_1     | 2023-07-03 15:58:43.666 [   INFO] epggrab: module opentv-skyuk created
tvheadend_1     | 2023-07-03 15:58:43.666 [   INFO] epggrab: module xmltv created
tvheadend_1     | 2023-07-03 15:58:43.667 [   INFO] spawn: Executing "/usr/bin/tv_find_grabbers"
tvheadend_1     | [ls.io-init] done.
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_ar created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_ch_search created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_combiner created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_eu_epgdata created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_eu_xmltvse created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_fi created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_fi_sv created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_fr created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_huro created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_is created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_it created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_na_dd created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_na_dtv created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_na_tvmedia created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_tr created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_uk_tvguide created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_zz_sdjson created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_zz_sdjson_sqlite created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_file created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_url created
tvheadend_1     | 2023-07-03 15:58:45.921 [   INFO] epggrab: module /usr/bin/tv_grab_wg created
tvheadend_1     | 2023-07-03 15:58:45.924 [   INFO] tbl-eit: scraper eit attempt to load config "pl"
tvheadend_1     | 2023-07-03 15:58:45.925 [   INFO] tbl-eit: scraper eit loaded config "pl"
tvheadend_1     | 2023-07-03 15:58:45.927 [   INFO] epgdb: gzip format detected, inflating (ratio 23.7% deflated size 467865)
tvheadend_1     | 2023-07-03 15:58:45.935 [   INFO] epgdb: parsing 1971308 bytes
tvheadend_1     | 2023-07-03 15:58:45.969 [   INFO] epgdb: loaded v3
tvheadend_1     | 2023-07-03 15:58:45.969 [   INFO] epgdb:   config     1
tvheadend_1     | 2023-07-03 15:58:45.969 [   INFO] epgdb:   broadcasts 6030
tvheadend_1     | 2023-07-03 15:58:46.086 [ NOTICE] START: HTS Tvheadend version 4.3-2140~g14298acb6 started, running as PID:214 UID:1000 GID:1000, CWD:/run/s6-rc:s6-rc-init:iobacE/servicedirs/svc-tvheadend CNF:/config
tvheadend_1     | 2023-07-03 15:59:00.131 [   INFO] subscription: 0004: "HTTP" subscribing on channel "ANTENA HD", weight: 100, adapter: "Silicon Labs Si2168 #0 : DVB-T #0", network: "dvbt2", mux: "650MHz", provider: "Emitel", service: "ANTENA HD", profile="tv", hostname="192.168.251.1", username="bartek", client="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
tvheadend_1     | 2023-07-03 15:59:00.851 [   INFO] transcode: 0002: 01:HEVC: ==> Using profile hd
tvheadend_1     | 2023-07-03 15:59:00.851 [   INFO] transcode: 0002: 02:EAC3: ==> Copy
tvheadend_1     | 2023-07-03 15:59:01.144 [  ERROR] libav: AVHWDeviceContext: Failed to initialise VAAPI connection: -1 (unknown libva error).
tvheadend_1     | 2023-07-03 15:59:01.144 [  ERROR] vaapi: failed to create a context for device: /dev/dri/renderD128
tvheadend_1     | 2023-07-03 15:59:01.279 [   INFO] vaapi: Bitrate = 2500 kbps; Buffer size = 45000 kbps; Max bitrate = 0 kbps
github-actions[bot] commented 1 year ago

Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.

bartekuk commented 1 year ago

sorry for late submission, I discovered it long time ago but only today found time to report

I am happy to help testing, I switched to source build at last working tag to obtain latest tvheadend

github-actions[bot] commented 11 months ago

This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.

mgilbey commented 9 months ago

Looks like the mesa-va-gallium package is missing from the base image. As a workaround, using a custom script to install at startup resolves this for me.

#!/bin/bash
apk add --no-cache mesa-va-gallium
bartekuk commented 9 months ago

Thanks for the tip, I pulled up to the latest applied the change, restarted the container but no joy, I remain on the d1366a06-ls152 revision where transcoding works correctly on my setup

Looks like the mesa-va-gallium package is missing from the base image. As a workaround, using a custom script to install at startup resolves this for me.

#!/bin/bash
apk add --no-cache mesa-va-gallium
jefflessard commented 8 months ago

+1

jefflessard commented 8 months ago

How to workaround

  1. Create file /somedir/custom-cont-init.d/mesa-va-gallium.sh
#!/bin/bash

echo "**** installing mesa-va-gallium ****"
apk add --no-cache mesa-va-gallium
#optional apk add --no-cache libva-utils --repository=https://dl-cdn.alpinelinux.org/alpine/edge/community
  1. Ensure owner and permissions

    chown -R nobody:users /somedir/custom-cont-init.d
    chmod u+x /somedir/custom-cont-init.d/mesa-va-gallium.sh
  2. Map container volume

    docker ... -v /somedir/custom-cont-init.d:/custom-cont-init.d:ro