2024-10-15, 05:21 AM
Trying to get streaming functioning properly (outside of my local network), I've discovered that Jellyfin does not seem to be transcoding when necessary for clients that don't support certain codecs. As a "test" client I've been using my Galaxy S20+, which doesn't support 4K HDR HEVC (which is why I'm specifically using this device).
All other codecs I've tested (which haven't required transcoding; including 4K HEVC SDR) play just fine. When I look at my logs in the web interface, there's no ffmpeg log, but I notice this in my sysem log:
[2024-10-14 21:40:39.051 -07:00] [INF] [61] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android" "2.6.2" playing "Rogue One: A Star Wars Story". Stopped at "0" ms
[2024-10-14 21:40:39.102 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 21:40:39.102 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 21:40:39.359 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 21:40:39.359 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 21:40:40.882 -07:00] [INF] [14] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "107.116.110.56" closed
This has me confused as it seems everything it shows is kosher from selecting he movie to "stopping" (in my case never starting) playback. I understand from searching that references to WebSockets are unrelated to playback.
Right now I'm running through a port open to DuckDNS that doesn't seem to have any connection issues (again, playing anything that doesn't require transcoding presents no issues; same with browsing and the small amount of admin level stuff that my user can do over the Android app (in case it matters, I use MPV player as the external video player when I use Jellyfin on my phone)
I had originally chased a wild goose in the wrong direction that I posted about previously, then thought I had inadvertently solved the underlying problem, and found out afterwards that I hadn't.
Currently I'm running Jellyfin 10.9.11 in TrueNAS Scale Dragonfish 24.04.2.1
System is running an Intel i7-8700. The only codec I do NOT have selected for transcoding and encoding (as I understand it's not supported by my CPU) is AV1.
As it is, it appears I'm not transcoding at all over remote connections, BUT transcoding using QSV is happening when connected directly to my local network. To verify this, I played Despicable Me 4 while connected to my local WiFi network, and then while connected through the phone's 5G. Here's what I see in the system log:
[2024-10-14 22:09:03.746 -07:00] [INF] [47] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.50.1" request
[2024-10-14 22:09:08.806 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:09:08.806 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "192.168.50.1", IsInLocalNetwork: True
[2024-10-14 22:09:08.833 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:09:08.833 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "192.168.50.1", IsInLocalNetwork: True
[2024-10-14 22:09:37.393 -07:00] [INF] [16] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android" "2.6.2" playing "Despicable Me 4". Stopped at "1000" ms
[2024-10-14 22:12:25.790 -07:00] [INF] [10] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "107.116.110.56" request
[2024-10-14 22:12:36.047 -07:00] [INF] [47] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:12:36.047 -07:00] [INF] [47] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 22:12:36.632 -07:00] [INF] [53] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:12:36.632 -07:00] [INF] [53] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
When I attempt to play from outside my local network I get an error stating "Media cannot be played by this device".
All other codecs I've tested (which haven't required transcoding; including 4K HEVC SDR) play just fine. When I look at my logs in the web interface, there's no ffmpeg log, but I notice this in my sysem log:
[2024-10-14 21:40:39.051 -07:00] [INF] [61] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android" "2.6.2" playing "Rogue One: A Star Wars Story". Stopped at "0" ms
[2024-10-14 21:40:39.102 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 21:40:39.102 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 21:40:39.359 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 21:40:39.359 -07:00] [INF] [32] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 21:40:40.882 -07:00] [INF] [14] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "107.116.110.56" closed
This has me confused as it seems everything it shows is kosher from selecting he movie to "stopping" (in my case never starting) playback. I understand from searching that references to WebSockets are unrelated to playback.
Right now I'm running through a port open to DuckDNS that doesn't seem to have any connection issues (again, playing anything that doesn't require transcoding presents no issues; same with browsing and the small amount of admin level stuff that my user can do over the Android app (in case it matters, I use MPV player as the external video player when I use Jellyfin on my phone)
I had originally chased a wild goose in the wrong direction that I posted about previously, then thought I had inadvertently solved the underlying problem, and found out afterwards that I hadn't.
Currently I'm running Jellyfin 10.9.11 in TrueNAS Scale Dragonfish 24.04.2.1
System is running an Intel i7-8700. The only codec I do NOT have selected for transcoding and encoding (as I understand it's not supported by my CPU) is AV1.
As it is, it appears I'm not transcoding at all over remote connections, BUT transcoding using QSV is happening when connected directly to my local network. To verify this, I played Despicable Me 4 while connected to my local WiFi network, and then while connected through the phone's 5G. Here's what I see in the system log:
[2024-10-14 22:09:03.746 -07:00] [INF] [47] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.50.1" request
[2024-10-14 22:09:08.806 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:09:08.806 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "192.168.50.1", IsInLocalNetwork: True
[2024-10-14 22:09:08.833 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:09:08.833 -07:00] [INF] [26] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "192.168.50.1", IsInLocalNetwork: True
[2024-10-14 22:09:37.393 -07:00] [INF] [16] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app "Jellyfin Android" "2.6.2" playing "Despicable Me 4". Stopped at "1000" ms
[2024-10-14 22:12:25.790 -07:00] [INF] [10] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "107.116.110.56" request
[2024-10-14 22:12:36.047 -07:00] [INF] [47] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:12:36.047 -07:00] [INF] [47] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
[2024-10-14 22:12:36.632 -07:00] [INF] [53] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "Dan". EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[2024-10-14 22:12:36.632 -07:00] [INF] [53] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 18000000, RemoteIP: "107.116.110.56", IsInLocalNetwork: False
When I attempt to play from outside my local network I get an error stating "Media cannot be played by this device".