AirenSoft/OvenMediaEngine

Intel QSV not working with ffmpeg build

laurence-diack-pk opened this issue · 4 comments

Describe the bug
Can't get QSV to work with the ffmpeg build from prerequisites.sh --enable-qsv. The intel drivers all seem to be working, and ffmpeg builds with the correct QSV extensions, but ffmpeg is unable to create the device context (no devices found)

I am running an intel nuc with a i7-1165G7 processor using MediaSDK

I have installed the drivers with OvenMediaEngine-master/misc/install_intel_driver.sh

I have attached outputs from vainfo and the suggested MediaSDK test to confirm that the drivers are working and should support the relevant H264 encoding, though the ffmpeg build created by prerequisites.sh does not seem capable of using the render device:

[2024-04-09 13:11:02.798] E [OvenMediaEngine:172300] FFmpeg | third_parties.cpp:111  | [AVHWDeviceContext: 0x7f4a0d4d9c00] No supported child device type is enabled

The service runs at root so it shouldn't be a permissions issue? (accessing /dev/dri/...)

I also have another differently configured ffmpeg installation on the machine for a different streaming task, though that shouldn't be interfering as the paths to the various libs are baked into the ffmpeg install as far as I understand

Server.xml*
Here are the relevant server.xml lines - this works with HWAccels set to false

...
            <Applications>
                <Application>
                    <Name>app</Name>
                    <!-- Application type (live/vod) -->
                    <Type>live</Type>
                    <OutputProfiles>
                        <!-- Enable this configuration if you want to hardware acceleration using GPU -->
                        <HWAccels>
                            <Decoder>
                                <Enable>true</Enable>
                                    <Modules>qsv</Modules>
                            </Decoder>
                            <Encoder>
                                <Enable>true</Enable>
                                    <Modules>qsv</Modules>
                            </Encoder>
                        </HWAccels>
                        <OutputProfile>
                            <Name>bypass_stream</Name>
                            <OutputStreamName>${OriginStreamName}</OutputStreamName>
                            <Playlist>
                                <Name>For WebRTC</Name>
                                <FileName>abr</FileName>
                                <Options>
                                    <WebRtcAutoAbr>true</WebRtcAutoAbr>
                                </Options>
                                <Rendition>
                                    <Name>720p</Name>
                                    <Video>bypass_video</Video>
                                    <Audio>bypass_audio</Audio>
                                </Rendition>
                                <Rendition>
                                    <Name>480p</Name>
                                    <Video>video_480</Video>
                                    <Audio>bypass_audio</Audio>
                                </Rendition>
                            </Playlist>
                            <Encodes>
                                <Video>
                                    <Name>bypass_video</Name>
                                    <Bypass>true</Bypass>
                                </Video>
                                <Audio>
                                    <Name>bypass_audio</Name>
                                    <Bypass>true</Bypass>
                                </Audio>
                                <Video>
                                    <Name>video_480</Name>
                                    <Codec>h264</Codec>
                                    <Bitrate>500000</Bitrate>
                                    <Width>848</Width>
                                    <Height>480</Height>
                                    <Framerate>15</Framerate>
                                    <KeyFrameInterval>15</KeyFrameInterval>
                                    <BFrames>0</BFrames>
                                    <Preset>faster</Preset>
                                </Video>
                            </Encodes>
                        </OutputProfile>
                    </OutputProfiles>
...

Logs
OvenMedia logs:

[2024-04-09 10:20:18.251] I [OvenMediaEngine:1529] Config | config_manager.cpp:239  | Trying to set logfile in directory... (/var/log/ovenmediaengine)
[2024-04-09 10:20:18.252] I [OvenMediaEngine:1529] Config | config_manager.cpp:261  | Trying to load configurations... (/usr/share/ovenmediaengine/conf/Server.xml)
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:23   | OvenMediaEngine v0.16.5 ((From archive)) is started on [grover-test] (Linux x86_64 - 5.15.0-101-generic, #111~20.04.1-Ubuntu SMP Mon Mar 11 15:44:43 UTC 2024)
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:27   | With modules:
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:28   |   FFmpeg 5.0.1
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:29   |     Configuration: --prefix=/opt/ovenmediaengine --extra-cflags='-I/opt/ovenmediaengine/include ' --extra-ldflags='-L/opt/ovenmediaengine/lib -Wl,-rpath,/opt/ovenmediaengine/lib ' --extra-libs=-ldl --disable-everything --disable-programs --disable-avdevice --disable-dwt --disable-lsp --disable-lzo --disable-faan --disable-pixelutils --enable-shared --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --enable-network --enable-libsrt --enable-dct --enable-rdft --disable-nvdec --disable-nvdec --disable-vaapi --disable-vdpau --disable-cuda-llvm --disable-cuvid --disable-ffnvcodec --enable-libmfx --enable-ffmpeg --enable-encoder='libvpx_vp8,libopus,libfdk_aac,libopenh264,mjpeg,png,h264_qsv,hevc_qsv' --enable-decoder='aac,aac_latm,aac_fixed,mp3float,mp3,h264,hevc,opus,vp8,vp8_qsv,h264_qsv,hevc_qsv' --enable-parser='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-protocol='tcp,udp,rtp,file,rtmp,tls,rtmps,libsrt' --enable-demuxer='rtsp,flv,live_flv,mp4,mp3' --enable-muxer='mp4,webm,mpegts,flv,mpjpeg' --enable-filter='asetnsamples,aresample,aformat,channelmap,channelsplit,scale,transpose,fps,settb,asettb,crop,format'
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:30   |     libavformat: 59.16.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:31   |     libavcodec: 59.18.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:32   |     libavutil: 57.17.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:33   |     libavfilter: 8.24.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:34   |     libswresample: 4.3.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:35   |     libswscale: 6.4.100
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:36   |   SRT: 1.5.2
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:37   |   SRTP: libsrtp2 2.4.2
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:38   |   OpenSSL: OpenSSL 3.0.7 1 Nov 2022
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:39   |     Configuration: compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:40   |   JsonCpp: 1.9.3
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | banner.cpp:41   |   jemalloc: 5.3.0-0-g54eaed1d8b56b1aa528be3bdd1877e59c56fa90c
[2024-04-09 10:20:18.258] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:73   | Server ID : 3d710f08-e924-415c-bf89-5a0620b2bf86
[2024-04-09 10:20:19.118] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:91   | Resolved public IP address (58.84.227.173) from stun server (stun.ovenmediaengine.com:13478)
[2024-04-09 10:20:19.118] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:109  | This host supports IPv4 and IPv6
[2024-04-09 10:20:19.132] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:126  | Trying to create MediaRouter...
[2024-04-09 10:20:19.132] I [OvenMediaEngine:1529] MediaRouter | mediarouter.cpp:40   | Mediarouter has been started.
[2024-04-09 10:20:19.133] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:129  | Trying to create WebRTC Publisher...
[2024-04-09 10:20:19.134] I [OvenMediaEngine:1529] Signalling.P2P | rtc_p2p_manager.cpp:27   | P2P is disabled in the configuration
[2024-04-09 10:20:19.135] I [OvenMediaEngine:1529] HTTP.Server | http_server_manager.cpp:319  | WebRTC Publisher is listening on *:3333 (TLS: *:3334)...
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10000
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10000
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10001
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10001
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10002
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10002
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10003
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10003
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10004
[2024-04-09 10:20:19.136] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10004
[2024-04-09 10:20:19.142] I [OvenMediaEngine:1529] ICE | ice_port.cpp:113  | ICE ports are listening on *:10004/UDP (0x7f6f39518610), *:10003/UDP (0x7f6f39518910), *:10002/UDP (0x7f6f39518c10), *:10001/UDP (0x7f6f39518f10), *:10000/UDP (0x7f6f39519210) (for WebRTC Publisher)
[2024-04-09 10:20:19.142] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:191  | TURN port is listening on *:3478/TCP (for WebRTC Publisher)
[2024-04-09 10:20:19.142] I [OvenMediaEngine:1529] Publisher | publisher.cpp:19   | WebRTC Publisher has been started.
[2024-04-09 10:20:19.143] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:130  | Trying to create LLHLS Publisher...
[2024-04-09 10:20:19.143] W [OvenMediaEngine:1529] LLHLS Publisher | llhls_publisher.cpp:78   | LLHLS Publisher is disabled by configuration
[2024-04-09 10:20:19.143] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:131  | Trying to create HLS Publisher...
[2024-04-09 10:20:19.144] W [OvenMediaEngine:1529] HLS | hls_publisher.cpp:38   | HLS Publisher is disabled by configuration
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:132  | Trying to create MPEG-DASH Publisher...
[2024-04-09 10:20:19.144] W [OvenMediaEngine:1529] DASH | dash_publisher.cpp:36   | DASH Publisher is disabled by configuration
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:133  | Trying to create Low-Latency MPEG-DASH Publisher...
[2024-04-09 10:20:19.144] W [OvenMediaEngine:1529] LLDASH | cmaf_publisher.cpp:39   | LLDASH Publisher is disabled by configuration
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:134  | Trying to create OVT Publisher...
[2024-04-09 10:20:19.144] W [OvenMediaEngine:1529] OVT | ovt_publisher.cpp:39   | OVTPublisher is disabled by configuration
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:135  | Trying to create File Publisher...
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] Publisher | publisher.cpp:19   | FilePublisher has been started.
[2024-04-09 10:20:19.144] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:136  | Trying to create MpegtsPush Publisher...
[2024-04-09 10:20:19.145] I [OvenMediaEngine:1529] Publisher | publisher.cpp:19   | MPEGTSPushPublisher has been started.
[2024-04-09 10:20:19.146] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:137  | Trying to create RtmpPush Publisher...
[2024-04-09 10:20:19.146] I [OvenMediaEngine:1529] Publisher | publisher.cpp:19   | RTMPPushPublisher has been started.
[2024-04-09 10:20:19.146] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:138  | Trying to create SrtPush Publisher...
[2024-04-09 10:20:19.146] I [OvenMediaEngine:1529] Publisher | publisher.cpp:19   | SRTPushPublisher has been started.
[2024-04-09 10:20:19.146] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:139  | Trying to create Thumbnail Publisher...
[2024-04-09 10:20:19.150] W [OvenMediaEngine:1529] Thumbnail | thumbnail_publisher.cpp:79   | ThumbnailPublisher is disabled by configuration
[2024-04-09 10:20:19.150] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:142  | Trying to create Transcoder...
[2024-04-09 10:20:19.156] I [OvenMediaEngine:1529] Transcoder | transcoder_gpu.cpp:43   | Trying to check the hardware accelerator
[2024-04-09 10:20:19.156] W [OvenMediaEngine:1529] Transcoder | transcoder_gpu.cpp:52   | No supported NVIDIA Accelerator
[2024-04-09 10:20:19.156] W [OvenMediaEngine:1529] Transcoder | transcoder_gpu.cpp:62   | No supported Xilinx Media Accelerator
[2024-04-09 10:20:19.156] E [OvenMediaEngine:1529] FFmpeg | third_parties.cpp:111  | [AVHWDeviceContext: 0x7f6f2f66aac0] No supported child device type is enabled
[2024-04-09 10:20:19.156] W [OvenMediaEngine:1529] Transcoder | transcoder_gpu.cpp:72   | No supported Intel QuickSync Accelerator
[2024-04-09 10:20:19.156] W [OvenMediaEngine:1529] Transcoder | transcoder_gpu.cpp:82   | No supported Netint VPU Accelerator
[2024-04-09 10:20:19.156] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:145  | Trying to create WebRTC Provider...
[2024-04-09 10:20:19.160] I [OvenMediaEngine:1529] Signalling.P2P | rtc_p2p_manager.cpp:27   | P2P is disabled in the configuration
[2024-04-09 10:20:19.160] I [OvenMediaEngine:1529] HTTP.Server | http_server_manager.cpp:319  | WebRTCProvider is listening on *:3333 (TLS: *:3334)...
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] HTTP.Server | http_server_manager.cpp:319  | WebRTCProvider is listening on *:3333 (TLS: *:3334)...
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10000
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10000
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10001
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10001
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10002
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10002
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10003
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10003
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 58.84.227.173:10004
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:305  | ICE candidate found: 192.168.1.100:10004
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port.cpp:113  | ICE ports are listening on *:10004/UDP (0x7f6f39518610), *:10003/UDP (0x7f6f39518910), *:10002/UDP (0x7f6f39518c10), *:10001/UDP (0x7f6f39518f10), *:10000/UDP (0x7f6f39519210) (for WebRTCProvider)
[2024-04-09 10:20:19.161] I [OvenMediaEngine:1529] ICE | ice_port_manager.cpp:191  | TURN port is listening on *:3478/TCP (for WebRTCProvider)
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | WebRTCProvider has been started.
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:146  | Trying to create MPEG-TS Provider...
[2024-04-09 10:20:19.171] W [OvenMediaEngine:1529] MpegtsProvider | mpegts_provider.cpp:147  | MPEGTSProvider is disabled by configuration
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] MpegtsProvider | mpegts_provider.cpp:39   | Terminated Mpegts Provider module.
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:147  | Trying to create SRT Provider...
[2024-04-09 10:20:19.171] W [OvenMediaEngine:1529] SrtProvider | srt_provider.cpp:50   | SrtProvider is disabled by configuration
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] SrtProvider | srt_provider.cpp:40   | Terminated SRT Provider module.
[2024-04-09 10:20:19.171] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:148  | Trying to create RTMP Provider...
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] RTMPProvider | rtmp_provider.cpp:143  | RTMPProvider is listening on *:1935
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | RTMPProvider has been started.
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:149  | Trying to create OVT Provider...
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | OVTProvider has been started.
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:150  | Trying to create RTSPC Provider...
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | RTSPCProvider has been started.
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:151  | Trying to create File Provider...
[2024-04-09 10:20:19.172] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | FileProvider has been started.
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:152  | Trying to create Scheduled Provider...
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | ScheduledProvider has been started.
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:153  | Trying to create Multiplex Provider...
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] Provider | provider.cpp:37   | MultiplexProvider has been started.
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] OvenMediaEngine | main.cpp:160  | All modules are initialized successfully
[2024-04-09 10:20:19.173] I [OvenMediaEngine:1529] Monitor | monitoring.cpp:75   | OvenMediaEngine(3d710f08-e924-415c-bf89-5a0620b2bf86) ServerMetric has been started for monitoring - 2024-04-09T10:20:19.173+12:00
[2024-04-09 10:20:19.175] I [OvenMediaEngine:1529] Certificate | certificate.cpp:35   | A certificate has been loaded for VirtualHost [default]:
	Cert file path: /opt/peek/credentials/ssl/cert.pem
	Chain cert file path: 
	Private key file path: /opt/peek/credentials/ssl/key.pem
[2024-04-09 10:20:19.177] I [OvenMediaEngine:1529] Monitor | server_metrics.cpp:61   | Create HostMetrics(default/3d710f08-e924-415c-bf89-5a0620b2bf86/default) for monitoring
[2024-04-09 10:20:19.177] I [OvenMediaEngine:1529] Orchestrator | orchestrator_internal.cpp:821  | Trying to create an application: [#default#app]
[2024-04-09 10:20:19.178] I [OvenMediaEngine:1529] Monitor | host_metrics.cpp:58   | Create ApplicationMetrics(#default#app/3d710f08-e924-415c-bf89-5a0620b2bf86/default/#default#app) for monitoring
[2024-04-09 10:20:19.178] I [OvenMediaEngine:1529] MediaRouter | mediarouter_application.cpp:51   | [#default#app(0)] Created Mediarouter application. worker(1)
[2024-04-09 10:20:19.178] I [OvenMediaEngine:1529] MediaRouter | mediarouter.cpp:83   | Created Mediarouter. app(#default#app)
[2024-04-09 10:20:19.178] I [OvenMediaEngine:1529] Publisher | application.cpp:181  | WebRTC Publisher Application has created [#default#app] application
[2024-04-09 10:20:19.178] W [OvenMediaEngine:1529] Publisher | publisher.cpp:70   | File publisher is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.178] W [OvenMediaEngine:1529] Publisher | publisher.cpp:70   | MPEGTSPush publisher is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.178] W [OvenMediaEngine:1529] Publisher | publisher.cpp:70   | RTMPPush publisher is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.178] W [OvenMediaEngine:1529] Publisher | publisher.cpp:70   | SRTPush publisher is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.179] I [OvenMediaEngine:1529] Transcoder | transcoder_application.cpp:34   | Created transcoder application. [#default#app]
[2024-04-09 10:20:19.179] I [OvenMediaEngine:1529] Transcoder | transcoder.cpp:94   | Transcoder has created [config][#default#app] application
[2024-04-09 10:20:19.179] I [OvenMediaEngine:1529] Provider | application.cpp:46   | WebRTCProvider has created [#default#app] application
[2024-04-09 10:20:19.179] I [OvenMediaEngine:1529] Provider | application.cpp:46   | RTMPProvider has created [#default#app] application
[2024-04-09 10:20:19.179] W [OvenMediaEngine:1529] Provider | provider.cpp:93   | OVT provider is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.179] W [OvenMediaEngine:1529] Provider | provider.cpp:93   | RTSP Pull provider is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.179] I [OvenMediaEngine:1529] Provider | application.cpp:46   | ScheduledProvider has created [#default#app] application
[2024-04-09 10:20:19.180] W [OvenMediaEngine:1529] Provider | provider.cpp:93   | Multiplex provider is disabled in #default#app application, so it was not created
[2024-04-09 10:20:19.181] I [OvenMediaEngine:1529] Certificate | certificate.cpp:35   | A certificate has been loaded for VirtualHost [api_server]:
	Cert file path: /opt/peek/credentials/ssl/cert.pem
	Chain cert file path: 
	Private key file path: /opt/peek/credentials/ssl/key.pem
[2024-04-09 10:20:19.181] I [OvenMediaEngine:1529] HTTP.Server | http_server_manager.cpp:319  | API Server is listening on *:8081 (TLS: *:8082)...
[2024-04-09 10:26:34.255] I [SPRTMP-t1935:1601] Provider | stream.cpp:51   | Unknown/(100) has been started stream
[2024-04-09 10:26:34.255] I [SPRTMP-t1935:1601] RTMPProvider | rtmp_provider.cpp:194  | A RTMP client has connected from <ClientSocket: 0x7f6f2de01010, #4, Connected, TCP, Nonblocking, 127.0.0.1:48378>
[2024-04-09 10:26:52.105] I [SPRTMP-t1935:1601] MediaRouter | mediarouter_application.cpp:340  | [#default#app/front(100)] Trying to create a stream
[2024-04-09 10:26:52.105] I [SPRTMP-t1935:1601] Monitor | application_metrics.cpp:58   | Create StreamMetrics(front/3d710f08-e924-415c-bf89-5a0620b2bf86/default/#default#app/front/i) for monitoring
[2024-04-09 10:26:52.105] I [SPRTMP-t1935:1601] MediaRouter | mediarouter_application.cpp:440  | [#default#app/front(100)] Stream has been created
[2024-04-09 10:26:52.105] I [SPRTMP-t1935:1601] Transcoder | transcoder_stream.cpp:63   | [#default#app/front(100)] Transcoder stream has been started
[2024-04-09 10:26:52.105] I [InboundWorker:1604] MediaRouter | mediarouter_application.cpp:477  | [#default#app/front(100)] Stream has been prepared 
[Stream Info]
id(100), msid(0), output(front), SourceType(Rtmp), RepresentationType(Source), Created Time (Tue Apr  9 10:26:34 2024) UUID(3d710f08-e924-415c-bf89-5a0620b2bf86/default/#default#app/front/i)

	Video Track #0: Public Name(Video_0) Variant Name(Video) Bitrate(0b) Codec(1,H264,none:0) BSF(AVCC) Resolution(1280x720) Framerate(30.00) KeyInterval(0/frame) SkipFrames(-1) BFrames(0) timebase(1/1000)
	Data  Track #2: Public Name(Data_2) Variant Name(Data) Codec(0,Unknown,none) BSF(ID3v2) timebase(1/1000)
[2024-04-09 10:26:52.105] I [InboundWorker:1604] Transcoder | transcoder_stream.cpp:128  | [#default#app/front(100)] Using local output profiles by webhook
[2024-04-09 10:26:52.106] I [InboundWorker:1604] Transcoder | transcoder_stream.cpp:412  | [#default#app/front(100)] Output stream has been created. [#default#app/front(4262666852)]
[2024-04-09 10:26:52.106] E [InboundWorker:1604] Transcoder | transcoder_stream.cpp:752  | [#default#app/front(100)] Decoder allocation failed.  InputTrack(0) > Decoder(0)
[2024-04-09 10:26:52.106] I [InboundWorker:1604] Transcoder | transcoder_stream.cpp:191  | No decoder generated
[2024-04-09 10:26:52.106] I [InboundWorker:1604] MediaRouter | mediarouter_application.cpp:340  | [#default#app/front(4262666852)] Trying to create a stream
[2024-04-09 10:26:52.106] I [InboundWorker:1604] Monitor | application_metrics.cpp:58   | Create StreamMetrics(front/3d710f08-e924-415c-bf89-5a0620b2bf86/default/#default#app/front/o) for monitoring
[2024-04-09 10:26:52.106] I [InboundWorker:1604] MediaRouter | mediarouter_application.cpp:440  | [#default#app/front(4262666852)] Stream has been created
[2024-04-09 10:26:52.106] I [InboundWorker:1604] Transcoder | transcoder_stream.cpp:150  | [#default#app/front(100)] Transcoder stream has been prepared
[2024-04-09 10:27:46.692] I [SPAPISvr-t8081:1608] HTTP.Server | http_server.cpp:149  | Client(<ClientSocket: 0x7f6f29e01010, #28, Connected, TCP, Nonblocking, 100.126.78.70:34792>) is connected on *:8081
[2024-04-09 10:28:49.196] I [DQHTTPTimer:1592] HTTP.Server | http_connection.cpp:100  | Client(HTTP/1.1 - <ClientSocket: 0x7f6f29e01010, #28, Connected, TCP, Nonblocking, 100.126.78.70:34792>) has timed out
[2024-04-09 10:28:49.219] I [SPAPISvr-t8081:1608] HTTP.Server | http_server.cpp:216  | Client(<ClientSocket: 0x7f6f29e01010, #28, Closed, TCP, Nonblocking, 100.126.78.70:34792>) has been disconnected by *:8081
[2024-04-09 10:28:55.550] I [SPRtcSig-t3334:1593] HTTP.Server | http_server.cpp:149  | Client(<ClientSocket: 0x7f6f34801010, #28, Connected, TCP, Nonblocking, 100.126.78.70:50834>) is connected on *:3334
[2024-04-09 10:28:55.881] I [SPRtcSig-t3334:1593] HTTP.Server | http_connection.cpp:147  | TLS connection accepted : Server Name(grover-test.tail607c9.ts.net) Alpn Protocol(h2) Client (<ClientSocket: 0x7f6f34801010, #28, Connected, TCP, Nonblocking, 100.126.78.70:50834>)
...

Note:

[2024-04-09 10:26:52.106] E [InboundWorker:1604] Transcoder | transcoder_stream.cpp:752  | [#default#app/front(100)] Decoder allocation failed.  InputTrack(0) > Decoder(0)

MediaSDK Test:

~/MediaSDK/build/__bin/release/simple_7_codec 
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0

The Media SDK API Version: 1.35

Check decoder H.264 with resolution(4096x2304)
The device supports decoder H.264 with resolution(4096x2304)

Check decoder H.265 with resolution(8192x8192)
The device supports decoder H.265 with resolution(8192x8192)

Check decoder H.265 10bit with resolution(8192x8192); (4096x4096) on SkyLake
The device supports decoder H.265 10bit with resolution(8192x8192); (4096x4096) on SkyLake

Check decoder MPEG-2 with resolution(2048x2048)
Query decoder MPEG-2 with resolution(2048x2048) failed
The device doesn't support decoder MPEG-2 with resolution(2048x2048), initialization failed
The decoder wasn't closed successfully.

Check decoder VC1 with resolution(1920x1080)
The device supports decoder VC1 with resolution(1920x1080)

Check decoder MJPEG with resolution(640x480)
The device supports decoder MJPEG with resolution(640x480)

Check decoder VP8 with resolution(1920x1080)
The device supports decoder VP8 with resolution(1920x1080)

Check encoder H.264 with resolution(4096x4096)
The device supports encoder H.264 with resolution(4096x4096)

Check encoder H.265 with resolution(4096x2176)
The device supports encoder H.265 with resolution(4096x2176)

Check encoder H.265 10bit with resolution(4096x2176) only on KabyLake
The device supports encoder H.265 10bit with resolution(4096x2176) only on KabyLake

Check encoder MPEG-2 with resolution(1920x1080)
The device supports encoder MPEG-2 with resolution(1920x1080)

Check encoder MJPEG with resolution(640x480)
The device supports encoder MJPEG with resolution(640x480)

The device supports the VPP with resolution(4096x4096)

vainfo output:

vainfo
Trying display: wayland
error: XDG_RUNTIME_DIR not set in the environment.
Trying display: x11
error: can't connect to X server!
Trying display: drm
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.16.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 24.2.1 (222a1b93b)
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointEncSliceLP
      (etc)

ffmpeg init_hw_device test:

/opt/ovenmediaengine/bin/ffmpeg -v debug -init_hw_device qsv
ffmpeg version 5.0.1 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.2)
  configuration: --prefix=/opt/ovenmediaengine --extra-cflags='-I/opt/ovenmediaengine/include ' --extra-ldflags='-L/opt/ovenmediaengine/lib -Wl,-rpath,/opt/ovenmediaengine/lib ' --extra-libs=-ldl --disable-everything --disable-programs --disable-avdevice --disable-dwt --disable-lsp --disable-lzo --disable-faan --disable-pixelutils --enable-shared --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --enable-network --enable-libsrt --enable-dct --enable-rdft --disable-nvdec --disable-nvdec --disable-vaapi --disable-vdpau --disable-cuda-llvm --disable-cuvid --disable-ffnvcodec --enable-libmfx --enable-ffmpeg --enable-encoder='libvpx_vp8,libopus,libfdk_aac,libopenh264,mjpeg,png,h264_qsv,hevc_qsv' --enable-decoder='aac,aac_latm,aac_fixed,mp3float,mp3,h264,hevc,opus,vp8,vp8_qsv,h264_qsv,hevc_qsv' --enable-parser='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-protocol='tcp,udp,rtp,file,rtmp,tls,rtmps,libsrt' --enable-demuxer='rtsp,flv,live_flv,mp4,mp3' --enable-muxer='mp4,webm,mpegts,flv,mpjpeg' --enable-filter='asetnsamples,aresample,aformat,channelmap,channelsplit,scale,transpose,fps,settb,asettb,crop,format'
  libavutil      57. 17.100 / 57. 17.100
  libavcodec     59. 18.100 / 59. 18.100
  libavformat    59. 16.100 / 59. 16.100
  libavfilter     8. 24.100 /  8. 24.100
  libswscale      6.  4.100 /  6.  4.100
  libswresample   4.  3.100 /  4.  3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-init_hw_device' ... matched as option 'init_hw_device' (initialise hardware device) with argument 'qsv'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Applying option init_hw_device (initialise hardware device) with argument qsv.
[AVHWDeviceContext @ 0x55bad75a5980] No supported child device type is enabled
Device creation failed: -38.
Failed to set value 'qsv' for option 'init_hw_device': Function not implemented
Error parsing global options: Function not implemented

Server:

  • OS: ubuntu 20.04
  • OvenMediaEngine Version: [e.g. v0.16.5]
  • Branch: dev

Player:

  • Device: PC
  • OS: Ubuntu 20.04
  • Browser Chrome
  • Version 123.0.6312.58

@laurence-diack-pk

Sorry for the late reply. Thank you for the detailed reporting.
Unfortunately, Recently, QSV was not being maintained. I will make plans soon and take steps to ensure that QSV runs well in the latest OME version. Please wait for good news.

Cheers.

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

I'm not sure if this will help you but it might point you in the right direction, I had a similar issue on Arch with a 12th gen Intel processor even though my ffmpeg looked fine and from what I can see it should apply to 11th gen plus.

Most guides online for hardware encoding and decoding only mention media-sdk when 11th gen and above should be using VPL and vpl-gpu-rt.

On Arch it was as simple as installing libvpl and vpl-gpu-rt as they are provided in the extra repository already.

For Ubuntu I think you'd need to go to the aforementioned packages gits provided by intel and follow the build instructions.

I only stumbled upong this when trying to get OBS with quicksync working, you can verify QSV is working with the command <ffmpeg -init_hw_device qsv>

EDIT: Should probably also mention you need an ffmpeg that's compiled with libvpl