Your FFmpeg is working correctly and is able to use the GPU.
Code: Select all
net.pms.io.OutputTextLogger configuration: --prefix=/usr --extra-version=3ubuntu1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-libmfx --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libcaca --enable-libdvdnav --enable-libdvdread --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
net.pms.io.OutputTextLogger libavutil 59. 8.100 / 59. 8.100
net.pms.io.OutputTextLogger libavcodec 61. 3.100 / 61. 3.100
net.pms.io.OutputTextLogger libavformat 61. 1.100 / 61. 1.100
net.pms.io.OutputTextLogger libavdevice 61. 1.100 / 61. 1.100
net.pms.io.OutputTextLogger libavfilter 10. 1.100 / 10. 1.100
net.pms.io.OutputTextLogger libswscale 8. 1.100 / 8. 1.100
net.pms.io.OutputTextLogger libswresample 5. 1.100 / 5. 1.100
net.pms.io.OutputTextLogger libpostproc 58. 1.100 / 58. 1.100
net.pms.io.OutputTextConsumer Hardware acceleration methods:
net.pms.io.OutputTextConsumer vdpau
net.pms.io.OutputTextConsumer cuda
net.pms.io.OutputTextConsumer vaapi
net.pms.io.OutputTextConsumer qsv
net.pms.io.OutputTextConsumer drm
net.pms.io.OutputTextConsumer opencl
net.pms.io.OutputTextConsumer vulkan
I think the reason why it is not being used is that the Google-Android-BubbleUPnP-MXPlayer.conf has not set a transcoding profile so it is using the default (MPEGPS-MPEG2-AC3)
Some of the GPU will be used by FFmpeg but if it was encoding to h264 or h265 then the GPU has dedicated HW for this.
That conf is very old as it was written for UMS V5.2.3 and android 5.1.1 going from the notes in that conf.
If you add this to the conf it should use the GPU properly.
I'm assuming BubbleUPnP/MXplayer supports this now.
That video may not need to be transcoded at all, the only reason why it is transcoding is the resolution has not been set in the conf so anything over 1080p is transcoded.
Code: Select all
net.pms.configuration.RendererConfiguration Resolution 3840x4320 is too high for this renderer, which supports up to 1920x1080
You can set this by adding
Code: Select all
MaxVideoWidth = 3840
MaxVideoHeight = 2160
although that video is in a strange resolution to normal 4K so may actually need to be transcoded.
It may also be able to play h265 depending on the device so this may need to be added to the supported formats.
Normally I would say try playing from the #--TRANSCODE--# folder and select "no transcoding" to see if it is able to be streamed, but there is a bug in 14.10.1 where this folder is empty. This has been fixed in 14.11.0
You could disable all transcoding in the settings in the meantime for testing but will be a bit of a pain to keep changing it for each video to see if it works, or you could go back a few versions before this bug crept in.
Another reason why it is not playing at all is there are some exception errors where the duration is negative
Code: Select all
TRACE 2025-03-17 00:04:09.258 [jupnp-stream-server-112] net.pms.network.HttpServletHelper Received a request from BubbleUPnP (192.168.50.10:59544):
============================= MEDIA HTTP SERVER REQUEST BEGIN ================================
GET /ums/media/b3688e82-2c9e-3a0e-9f32-a0f2987d7139/196/bbb_sunflower_2160p_30fps_stereo_abl.mp4_transcoded_to.mpg HTTP/1.1
HEADER:
User-Agent: MXPlayer/1.86.0 (Linux; Android 14; en-AU; SM-S908E Build/UP1A.231005.007.S908EXXSCEYB1)
Accept: */*
Range: bytes=9223372034707292147-
Connection: close
Host: 192.168.100.102:50011
Icy-MetaData: 1
============================= MEDIA HTTP SERVER REQUEST END ==================================
TRACE 2025-03-17 00:04:09.259 [jupnp-stream-server-112] net.pms.store.StoreItem Asked stream chunk: ByteRange [start=9223372034707292147, end=9223372034707292158] of bbb_sunflower_2160p_30fps_stereo_abl.mp4 and engine FFmpeg Video (MPEGPS-MPEG2-AC3)
...
...
TRACE 2025-03-17 00:04:09.260 [jupnp-stream-server-112] net.pms.network.mediaserver.servlets.MediaServerServlet Sending 12 bytes.
TRACE 2025-03-17 00:04:09.261 [jupnp-stream-server-112] net.pms.network.HttpServletHelper Transfer response sent to BubbleUPnP (192.168.50.10:59544):
============================= MEDIA HTTP SERVER RESPONSE BEGIN ===============================
HTTP/1.1 206 (non-chunked)
HEADER:
Server: Linux-amd64-6.11.0-19-generic, UPnP/1.0 DLNADOC/1.50, UMS/14.10.1
Date: Sun, 16 Mar 2025 13:04:09 GMT
Content-Type: video/mpeg
Content-Range: bytes 9223372034707292147-9223372034707292158/9223372034707292159
Accept-Ranges: bytes
Connection: keep-alive
Content-Length: 12
============================= MEDIA HTTP SERVER RESPONSE END =================================
TRACE 2025-03-17 00:04:09.261 [jupnp-stream-server-112] net.pms.io.BufferedOutputFileImpl Suspend Read: readCount=9223372034707292147 / writeCount=1425408
INFO 2025-03-17 00:04:09.741 [Thread-66] net.pms.util.SystemErrWrapper Exception in thread "Thread-66" java.lang.IllegalArgumentException: durationMillis must not be negative
INFO 2025-03-17 00:04:09.742 [Thread-66] net.pms.util.SystemErrWrapper at org.apache.commons.lang3.Validate.inclusiveBetween(Validate.java:337)
INFO 2025-03-17 00:04:09.742 [Thread-66] net.pms.util.SystemErrWrapper at org.apache.commons.lang3.time.DurationFormatUtils.formatDuration(DurationFormatUtils.java:358)
INFO 2025-03-17 00:04:09.742 [Thread-66] net.pms.util.SystemErrWrapper at org.apache.commons.lang3.time.DurationFormatUtils.formatDuration(DurationFormatUtils.java:341)
INFO 2025-03-17 00:04:09.742 [Thread-66] net.pms.util.SystemErrWrapper at net.pms.renderers.devices.players.PlayerState.setPosition(PlayerState.java:100)
INFO 2025-03-17 00:04:09.743 [Thread-66] net.pms.util.SystemErrWrapper at net.pms.renderers.devices.players.PlaybackTimer.lambda$start$0(PlaybackTimer.java:54)
INFO 2025-03-17 00:04:09.743 [Thread-66] net.pms.util.SystemErrWrapper at java.base/java.lang.Thread.run(Unknown Source)
TRACE 2025-03-17 00:04:16.762 [jupnp-stream-server-112] net.pms.io.BufferedOutputFileImpl Resume Read: readCount=9223372034707292147 / writeCount=203001856
DEBUG 2025-03-17 00:04:16.763 [jupnp-stream-server-112] net.pms.network.HttpServletHelper Sending stream with premature end: 0 bytes. Reason: written 32768 > 12 content-length
TRACE 2025-03-17 00:04:16.763 [jupnp-stream-server-112] net.pms.network.UmsAsyncListener Stream Async Premature end: written 32768 > 12 content-length, duration: 7502 ms
TRACE 2025-03-17 00:04:16.764 [jupnp-stream-server-112] net.pms.io.ProcessWrapperImpl Ready to Stop: true
TRACE 2025-03-17 00:04:16.764 [jupnp-stream-server-112] net.pms.network.UmsAsyncListener Stream Async Complete, uri: /ums/media/b3688e82-2c9e-3a0e-9f32-a0f2987d7139/196/bbb_sunflower_2160p_30fps_stereo_abl.mp4_transcoded_to.mpg, duration: 7503 ms
WARN 2025-03-17 00:04:16.765 [jupnp-stream-server-112] org.eclipse.jetty.server.Response writeError: status=500, message=java.io.IOException: content-length 12 != 0 written, response=ErrorResponse@6c34bb14{500,GET@986df07 http://192.168.100.102:50011/ums/media/b3688e82-2c9e-3a0e-9f32-a0f2987d7139/196/bbb_sunflower_2160p_30fps_stereo_abl.mp4_transcoded_to.mpg HTTP/1.1}
java.io.IOException: content-length 12 != 0 written
at org.eclipse.jetty.server.internal.HttpChannelState$ChannelCallback.succeeded(HttpChannelState.java:1532)
at org.eclipse.jetty.ee10.servlet.ServletChannel.onCompleted(ServletChannel.java:760)
at org.eclipse.jetty.ee10.servlet.ServletChannel.handle(ServletChannel.java:426)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1507)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1500)
at org.eclipse.jetty.ee10.servlet.ServletChannelState.runInContext(ServletChannelState.java:1308)
at org.eclipse.jetty.ee10.servlet.ServletChannelState.complete(ServletChannelState.java:828)
at org.eclipse.jetty.ee10.servlet.AsyncContextState.complete(AsyncContextState.java:61)
at net.pms.network.HttpServletHelper.copyStream(HttpServletHelper.java:295)
at net.pms.network.HttpServletHelper.lambda$copyStreamAsync$0(HttpServletHelper.java:305)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1507)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1500)
at org.eclipse.jetty.ee10.servlet.AsyncContextState.lambda$start$0(AsyncContextState.java:138)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.run(ContextHandler.java:1513)
at org.eclipse.jetty.server.handler.ContextHandler$ScopedContext.lambda$execute$0(ContextHandler.java:1530)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:979)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1209)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1164)
at java.base/java.lang.Thread.run(Unknown Source)
This is probably a bug as I have seen similar messages when playing on my PS4 after UMS changed the streaming library, but the video would still play as it would run FFmpeg again.
It may be that instead of reading this a a range between the 2 numbers
Code: Select all
Content-Range: bytes 9223372034707292147-9223372034707292158/9223372034707292159
it is interpreting this as take one from the other which results in -11
I'll mention this on github.
Have you got any other devices to try playing on? Does the web player work properly and use the GPU?