Hier mal mein Versuch Video Transcoding mit GPU unterstützung zu nutzen:
Ich habe zum Testen die Handy Variante von UWE67 genommen:
- /home/myhome/ffmpeg/ffmpeg-4.2.1-amd64-static/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -hwaccel_output_format vaapi -i <input> -map 0:v -map 0:a:0 -vf 'deinterlace_vaapi=rate=field:auto=1,scale_vaapi=w=640:h=360' -c:v h264_vaapi -preset slow -qmin 18 -qmax 30 -g 25 -r 25 -c:a aac -ac 2 -b:v 0.3M -maxrate 0.3M -bufsize 0.3M
Ich verwende dasselbe Mainboard (J4105M von Asrock) allerdings läuft der VDR bei mir nicht Headless.
Einen Test mit Frontend detached habe ich aber auch schon probiert - klappt auch nicht. Im Log landet folgendes (Nach einem Umschaltvorgang):
- Nov 29 11:45:20 vdr vdr: [4664] vdrlive::stream::session(2777aadba756823d299cb7607d24905b)
- Nov 29 11:45:20 vdr vdr: [4664] vdrlive::stream::vtype(27)
- Nov 29 11:45:20 vdr vdr: [4664] vdrlive::stream::f_worker(0x7f6a1400ea80)
- Nov 29 11:45:20 vdr vdr: [4664] Live: FFmpegTread::StartFFmpeg() change channel 1 -> 2
- Nov 29 11:45:20 vdr vdr: [4664] Live: FFmpegTread::StartFFmpeg() completed
- Nov 29 11:45:20 vdr vdr: [4664] vdrlive::stream::StartFFmpeg(2)
- Nov 29 11:45:20 vdr vdr: [6276] stream utility handler thread started (pid=1684, tid=6276, prio=high)
- Nov 29 11:45:20 vdr vdr: [6276] Live: FFmpegTread::Action() started channel = 2
- Nov 29 11:45:20 vdr vdr: [6276] Live: FFmpegTread::Action packetizer cmd: /home/gilbert/ffmpeg/ffmpeg-4.2.1-amd64-static/ffmpeg -loglevel warning -f mpegts -analyzeduration 1.2M -probesize 5M -hwaccel vaapi -hwaccel_output_format vaapi -i "http://localhost:3000/2" -map 0:v -map 0:a:0 -vf 'deinterlace_vaapi=rate=field:auto=1,scale_vaapi=w=640:h=360' -c:v h264_vaapi -preset slow -qmin 18 -qmax 30 -g 25 -r 25 -c:a aac -ac 2 -b:v 0.3M -maxrate 0.3M -bufsize 0.3M
- Nov 29 11:45:20 vdr vdr: [6276] Live: FFmpegTread::Action::Open(1) ffmpeg started
- Nov 29 11:45:20 vdr vdr: [4664] vdrlive::stream: generating EPG info
- Nov 29 11:45:20 vdr vdr: [1869] Streamdev: Accepted new client (HTTP) 127.0.0.1:44920
- Nov 29 11:45:20 vdr vdr: [6281] streamdev-livestreaming thread started (pid=1684, tid=6281, prio=high)
- Nov 29 11:45:20 vdr vdr: [6282] device 2 receiver thread started (pid=1684, tid=6282, prio=high)
- Nov 29 11:45:20 vdr vdr: [6280] streamdev-writer thread started (pid=1684, tid=6280, prio=high)
- Nov 29 11:45:20 vdr vdr: [6283] device 2 TS buffer thread started (pid=1684, tid=6283, prio=high)
- Nov 29 11:45:21 vdr vdr: [6276] Live: FFmpegTread::Action() ffmpeg starting... 0
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] decode_slice_header error
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] no frame!
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] decode_slice_header error
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] no frame!
- [....]
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] non-existing PPS 0 referenced
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] decode_slice_header error
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] no frame!
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x6944bc0] Increasing reorder buffer to 2
- Nov 29 11:45:22 vdr vdr[1684]: [mpegts @ 0x693cc40] Could not find codec parameters for stream 8 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
- Nov 29 11:45:22 vdr vdr[1684]: Consider increasing the value for the 'analyzeduration' and 'probesize' options
- Nov 29 11:45:22 vdr vdr[1684]: Codec AVOption preset (Configuration preset) specified for output file #0 (ffmpeg_2_data.m3u8) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
- Nov 29 11:45:22 vdr vdr[1684]: [AVHWDeviceContext @ 0x6b0fec0] No VA display found for any default device.
- Nov 29 11:45:22 vdr vdr[1684]: Device creation failed: -22.
- Nov 29 11:45:22 vdr vdr[1684]: [h264 @ 0x699c040] No device available for decoder: device type vaapi needed for codec h264.
- Nov 29 11:45:22 vdr vdr[1684]: Device setup failed for decoder on input stream #0:0 : Invalid argument
- Nov 29 11:45:22 vdr vdr: [1869] ERROR: read from client (HTTP) 127.0.0.1:44920 failed: Connection reset by peer
- Nov 29 11:45:22 vdr vdr: [1869] streamdev-server: closing HTTP connection to 127.0.0.1:44920
- Nov 29 11:45:22 vdr vdr: [6276] Live: FFmpegTread::Action() ffmpeg starting... 1
- Nov 29 11:45:22 vdr vdr: [6276] Live: FFmpegTread::Action::Open(1) ffmpeg started
- Nov 29 11:45:22 vdr vdr: [6280] ERROR: streamdev-server: couldn't send data: Bad file descriptor
- Nov 29 11:45:22 vdr vdr: [6280] streamdev-writer thread ended (pid=1684, tid=6280)
- Nov 29 11:45:22 vdr vdr: [6281] streamdev-livestreaming thread ended (pid=1684, tid=6281)
- Nov 29 11:45:22 vdr vdr: [1869] buffer stats: 240828 (6%) used
- Nov 29 11:45:22 vdr vdr: [1869] Streamdev: Accepted new client (HTTP) 127.0.0.1:44922
- Nov 29 11:45:22 vdr vdr: [6283] device 2 TS buffer thread ended (pid=1684, tid=6283)
- Nov 29 11:45:22 vdr vdr: [6282] buffer stats: 240452 (4%) used
- Nov 29 11:45:22 vdr vdr: [6282] device 2 receiver thread ended (pid=1684, tid=6282)
- Nov 29 11:45:22 vdr vdr: [6291] streamdev-writer thread started (pid=1684, tid=6291, prio=high)
- Nov 29 11:45:22 vdr vdr: [6292] streamdev-livestreaming thread started (pid=1684, tid=6292, prio=high)
- Nov 29 11:45:22 vdr vdr: [6293] device 2 receiver thread started (pid=1684, tid=6293, prio=high)
- Nov 29 11:45:22 vdr vdr: [6294] device 2 TS buffer thread started (pid=1684, tid=6294, prio=high)
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] non-existing PPS 0 referenced
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] non-existing SPS 0 referenced in buffering period
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] SPS unavailable in decode_picture_timing
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] non-existing PPS 0 referenced
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] decode_slice_header error
- Nov 29 11:45:23 vdr vdr[1684]: [h264 @ 0x7560bc0] no frame!
- [...]
Display More
Problem ist anscheinend, dass ffmpeg in der statischen variante die weiter oben angegeben war ohne vaapi Unterstützung gebaut wurde.
Das kann man herausfinden mit:
Mir fehlt hier die Zeile:
Auch diese beiden Version führen bei meinem Ubuntu (yavdr ansible) nicht zum gewünschten Ergebnis...
https://launchpad.net/~jonathonf/+archive/ubuntu/ffmpeg-4
https://snapcraft.io/ffmpeg
Kennt jemand eine geeignete Quelle für ein Binary?