remote access openvpn - brun2025 - 2025-04-21
Hello I am experiencing video playback issues while accessing jellyfin remotely, no issues with playback on home network ,detailed below are a couple of cases and related logs
VIDEO PLAYBACK:
I noticed the following while trying to playback media which results in "Play Back Error : There was an error processing the request. Please try again later"
Code: [2025-04-21 16:49:53.472 -04:00] [INF] [47] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "10.66.66.2" request
[2025-04-21 16:50:09.496 -04:00] [ERR] [47] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: "Reading the request body timed out due to data arriving too slowly. See MinRequestBodyDataRate". URL "POST" "/Items/d67b61b3f60269436b2a1a0512706a9b/PlaybackInfo".
[2025-04-21 16:50:25.273 -04:00] [WRN] [47] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "10.66.66.2" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
MUSIC PLAYBACK:
However, in the case of music the audio files load and playback without any issues
Code: [2025-04-21 17:13:26.675 -04:00] [INF] [10] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "10.66.66.2" request
[2025-04-21 17:13:36.212 -04:00] [INF] [37] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "opus", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "opus", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ts", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webma", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "webma", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "mp4", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }], ContainerProfiles: [], CodecProfiles: [], SubtitleProfiles: [] }
[2025-04-21 17:13:36.213 -04:00] [INF] [37] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "admin". EnableAudioPlaybackTranscoding: True
[2025-04-21 17:13:36.271 -04:00] [INF] [37] Jellyfin.Api.Controllers.UniversalAudioController: GetPostedPlaybackInfo profile: DeviceProfile { Name: null, Id: null, MaxStreamingBitrate: 8000000, MaxStaticBitrate: 8000000, MusicStreamingTranscodingBitrate: 128000, MaxStaticMusicBitrate: 8000000, DirectPlayProfiles: [DirectPlayProfile { Container: "opus", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "opus", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ts", AudioCodec: "mp3", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "mp3", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "aac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4a", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "m4b", AudioCodec: "aac", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "flac", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webma", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "webm", AudioCodec: "webma", VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "wav", AudioCodec: null, VideoCodec: null, Type: Audio }, DirectPlayProfile { Container: "ogg", AudioCodec: null, VideoCodec: null, Type: Audio }], TranscodingProfiles: [TranscodingProfile { Container: "mp4", Type: Audio, VideoCodec: "", AudioCodec: "aac", Protocol: hls, EstimateContentLength: False, EnableMpegtsM2TsMode: False, TranscodeSeekInfo: Auto, CopyTimestamps: False, Context: Streaming, EnableSubtitlesInManifest: False, MaxAudioChannels: null, MinSegments: 0, SegmentLength: 0, BreakOnNonKeyFrames: False, Conditions: [], EnableAudioVbrEncoding: True }], ContainerProfiles: [], CodecProfiles: [], SubtitleProfiles: [] }
[2025-04-21 17:13:36.273 -04:00] [INF] [37] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for "admin". EnableAudioPlaybackTranscoding: True
[2025-04-21 17:13:42.927 -04:00] [ERR] [10] Jellyfin.Api.Middleware.ExceptionMiddleware: Error processing request: "Reading the request body timed out due to data arriving too slowly. See MinRequestBodyDataRate". URL "POST" "/Sessions/Playing".
DIRECT STREAM PLAYBACK:
If I copy the stream url from the app and paste it into VLC, i am able to play it back
Has anyone else experienced this type of behavior and can suggest a potential fix or how to troubleshoot it further?
RE: remote access openvpn - Duvel - 2025-04-22
you should post some info about your openvpn config, and the bitrate of the videos you are streaming.
Is the openvpn installed on your main router or another device ??
It looks like it can't handle encryption fast enough when transferring high volumes.
Consider also doing a test with lower bitrate when watching a movie, which would give more hints about that issue
RE: remote access openvpn - brun2025 - 2025-04-22
i am running openvpn on my pfsense firewall with the following settings:
Mode: Remote Access ( SSL/TLS + User Auth )
Data Ciphers: AES-256-GCM, AES-128-GCM, CHACHA20-POLY1305, AES-256-CBC
Digest: SHA256
D-H Params: 2048 bits
i was trying to stream a h265 encoded media with usually gets transcoded via intel quick sync (jellyfin docker container in truenas I5-7400, 19.5GB RAM, 120GB SATA SSD Boot Drive)
I will try a lower level of encryption first, then lower bitrate file, and/or a combination of the two
RE: remote access openvpn - Duvel - 2025-04-22
You are lucky, I am the the happy owner of a pfSense firewall too, and configured for OpenVPN :-D
So I can further help you to debug this if needed.
Do you have a chip on the hardware that can be used to accelerate encryption?
https://docs.netgate.com/pfsense/en/latest/hardware/cryptographic-accelerators.html
I dont. I have an 10yo old watchguard device that works pretty well, but I never tried to stream a movie through the VPN, no use for my case.
Really the first thing I would test at your place is just change the quality (ie bitrate) of the movie in the web client to the lower one (420 kbps) and see if that works. and if yes you pretty much have the answer on why it is failing with higher quality.
You should also check your pfsense CPU usage when streaming through the VPN with various bitrates, and check the openvpn logs in Status > System Logs, there should obviously be some hints lying there, of your previous failed attempts.
RE: remote access openvpn - brun2025 - 2025-04-23
(2025-04-22, 11:50 AM)Duvel Wrote: You are lucky, I am the the happy owner of a pfSense firewall too, and configured for OpenVPN :-D
So I can further help you to debug this if needed.
Do you have a chip on the hardware that can be used to accelerate encryption?
https://docs.netgate.com/pfsense/en/latest/hardware/cryptographic-accelerators.html
I dont. I have an 10yo old watchguard device that works pretty well, but I never tried to stream a movie through the VPN, no use for my case.
Really the first thing I would test at your place is just change the quality (ie bitrate) of the movie in the web client to the lower one (420 kbps) and see if that works. and if yes you pretty much have the answer on why it is failing with higher quality.
You should also check your pfsense CPU usage when streaming through the VPN with various bitrates, and check the openvpn logs in Status > System Logs, there should obviously be some hints lying there, of your previous failed attempts.
Good news I have streaming mostly working at the moment after switching from UDP to TCP in OpenVPN on my android phone. I've tested a few files with the Web Player and Integrated Player at varying video quality 1-4 Mbps H265 and 3-10 Mbps H265 with more than adequate playback via cellular network to my NAS at home. As a result it would be safe to conclude that playback via remote wifi network shouldnt be an issue.
However, I still need to test chromecast functionality on a remote network tomorrow
Hardware SPEC
Code: CPU Type Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz
Current: 3200 MHz, Max: 3201 MHz
4 CPUs: 1 package(s) x 4 core(s)
AES-NI CPU Crypto: Yes (active)
QAT Crypto: No
Hardware crypto AES-CBC, AES-CCM, AES-GCM, AES-ICM, AES-XTS
OpenVPN Iperf Remote Throughput Test
on mobile I should have enough throughput for a fairly high bit rate file
Code: Server listening on 7896 (test #1)
-----------------------------------------------------------
Accepted connection from XX.XX.88.2, port 60470
[ 5] local XX.XX.24.XX port 7896 connected to XX.XX.88.2 port 60482
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 1.00 MBytes 8.38 Mbits/sec
[ 5] 1.00-2.00 sec 896 KBytes 7.34 Mbits/sec
[ 5] 2.00-3.00 sec 1.12 MBytes 9.44 Mbits/sec
[ 5] 3.00-4.00 sec 1.38 MBytes 11.5 Mbits/sec
[ 5] 4.00-5.00 sec 1.38 MBytes 11.5 Mbits/sec
[ 5] 5.00-6.00 sec 1.38 MBytes 11.5 Mbits/sec
[ 5] 6.00-7.00 sec 1.50 MBytes 12.6 Mbits/sec
[ 5] 7.00-8.00 sec 1.50 MBytes 12.6 Mbits/sec
[ 5] 8.00-9.00 sec 1.00 MBytes 8.39 Mbits/sec
[ 5] 9.00-10.00 sec 1.00 MBytes 8.39 Mbits/sec
[ 5] 10.00-10.06 sec 128 KBytes 19.3 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.06 sec 12.2 MBytes 10.2 Mbits/sec receiver
Attached screenshot not much cpu usage while streaming
RE: remote access openvpn - brun2025 - 2025-04-24
Unfortunately, streaming remote via Android app not working. However, I am able to stream h265 to a newer smart tv via the VLC app. Not ideal but I will try wireguard next
|