EPG Zeitzone-Fix + --rtsp-tcp
This commit is contained in:
parent
22d09621ee
commit
1ad2d35e58
2 changed files with 14 additions and 7 deletions
|
|
@ -115,7 +115,9 @@ public partial class MainWindow : Window
|
||||||
"--network-caching=1000",
|
"--network-caching=1000",
|
||||||
"--no-video-title-show",
|
"--no-video-title-show",
|
||||||
"--no-osd",
|
"--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);
|
_player = new MediaPlayer(_libVLC);
|
||||||
VideoView.MediaPlayer = _player;
|
VideoView.MediaPlayer = _player;
|
||||||
|
|
|
||||||
|
|
@ -162,22 +162,27 @@ public class EpgService
|
||||||
if (string.IsNullOrWhiteSpace(s)) return DateTime.MinValue;
|
if (string.IsNullOrWhiteSpace(s)) return DateTime.MinValue;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Format: "yyyyMMddHHmmss +0200" oder ohne Offset
|
|
||||||
var parts = s.Trim().Split(' ', 2);
|
var parts = s.Trim().Split(' ', 2);
|
||||||
var dt = DateTime.ParseExact(parts[0], "yyyyMMddHHmmss",
|
var dt = DateTime.ParseExact(parts[0], "yyyyMMddHHmmss",
|
||||||
System.Globalization.CultureInfo.InvariantCulture);
|
System.Globalization.CultureInfo.InvariantCulture);
|
||||||
|
// dt.Kind = Unspecified hier
|
||||||
|
|
||||||
if (parts.Length == 2 && parts[1].Length == 5)
|
if (parts.Length == 2 && parts[1].Length == 5)
|
||||||
{
|
{
|
||||||
|
// Offset parsen: "+0200" oder "+0000"
|
||||||
var sign = parts[1][0] == '-' ? -1 : 1;
|
var sign = parts[1][0] == '-' ? -1 : 1;
|
||||||
var hh = int.Parse(parts[1].Substring(1, 2));
|
var hh = int.Parse(parts[1].Substring(1, 2));
|
||||||
var mm = int.Parse(parts[1].Substring(3, 2));
|
var mm = int.Parse(parts[1].Substring(3, 2));
|
||||||
var offsetMin = sign * (hh * 60 + mm);
|
var offset = TimeSpan.FromMinutes(sign * (hh * 60 + mm));
|
||||||
// dt war als UTC+offset interpretiert, nach lokaler Zeit konvertieren
|
|
||||||
var asUtc = new DateTimeOffset(dt, TimeSpan.FromMinutes(offsetMin));
|
// dt ist die Uhrzeit im angegebenen Offset (nicht UTC)
|
||||||
return asUtc.LocalDateTime;
|
// 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; }
|
catch { return DateTime.MinValue; }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue