EPG Zeitzone-Fix + --rtsp-tcp

This commit is contained in:
administrator 2026-05-11 01:20:28 +02:00
parent 22d09621ee
commit 1ad2d35e58
2 changed files with 14 additions and 7 deletions

View file

@ -115,7 +115,9 @@ public partial class MainWindow : Window
"--network-caching=1000",
"--no-video-title-show",
"--no-osd",
"--no-snapshot-preview"
"--no-snapshot-preview",
"--rtsp-tcp" // RTP over TCP: stabilere Sessions, vermeidet UDP-Routing-Kollisionen
// wenn mehrere Instanzen parallel auf die gleiche FritzBox zugreifen
);
_player = new MediaPlayer(_libVLC);
VideoView.MediaPlayer = _player;

View file

@ -162,22 +162,27 @@ public class EpgService
if (string.IsNullOrWhiteSpace(s)) return DateTime.MinValue;
try
{
// Format: "yyyyMMddHHmmss +0200" oder ohne Offset
var parts = s.Trim().Split(' ', 2);
var dt = DateTime.ParseExact(parts[0], "yyyyMMddHHmmss",
System.Globalization.CultureInfo.InvariantCulture);
// dt.Kind = Unspecified hier
if (parts.Length == 2 && parts[1].Length == 5)
{
// Offset parsen: "+0200" oder "+0000"
var sign = parts[1][0] == '-' ? -1 : 1;
var hh = int.Parse(parts[1].Substring(1, 2));
var mm = int.Parse(parts[1].Substring(3, 2));
var offsetMin = sign * (hh * 60 + mm);
// dt war als UTC+offset interpretiert, nach lokaler Zeit konvertieren
var asUtc = new DateTimeOffset(dt, TimeSpan.FromMinutes(offsetMin));
return asUtc.LocalDateTime;
var offset = TimeSpan.FromMinutes(sign * (hh * 60 + mm));
// dt ist die Uhrzeit im angegebenen Offset (nicht UTC)
// DateTimeOffset(Unspecified, offset) interpretiert dt als "diese Zeit in dieser Zone"
// .ToLocalTime() konvertiert korrekt in die Systemzeitzone
return new DateTimeOffset(dt, offset).ToLocalTime().DateTime;
}
return dt;
// Kein Offset → UTC annehmen (epg.pw liefert immer +0000, aber sicherheitshalber)
return new DateTimeOffset(dt, TimeSpan.Zero).ToLocalTime().DateTime;
}
catch { return DateTime.MinValue; }
}