Add progress bar, timeline and seeking for replay/catchup content#13
Open
duromir wants to merge 1 commit intonirvana-7777:Omegafrom
Open
Add progress bar, timeline and seeking for replay/catchup content#13duromir wants to merge 1 commit intonirvana-7777:Omegafrom
duromir wants to merge 1 commit intonirvana-7777:Omegafrom
Conversation
- Implement GetStreamTimes() for both live TV (EPG-based progress) and replay (fixed programme duration) so Kodi displays a proper timeline - Force ffmpegdirect for replay content with catchup buffer times, programme start/end, and playback_as_live=false - Add StreamRedirectProxy: a local HTTP server that generates fresh AES-CBC encrypted URLs for each seek position, since the t= timestamp is inside the encrypted payload and cannot be appended as a plain query parameter - Use 302 redirects so FFmpeg resolves relative HLS segment URLs against the CDN, not the local proxy - Generate a new session ID (UUID) per seek to prevent the CDN from rejecting requests when the previous session is still considered active - Cache encrypted URLs for identical timestamp retries - Compute server time offset once at stream start for accurate ctime values without per-seek API calls - Track current playback state (live/replay, channel, start/end times) for GetStreamTimes() reporting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
GetStreamTimes()for both live TV (EPG-based duration) and replay/catchup (fixed start/end times), so Kodi displays the correct programme duration and playback position.StreamRedirectProxy, a local HTTP server that intercepts ffmpegdirect seek requests and generates fresh AES-encrypted URLs with the correctt=timestamp. Uses 302 redirects so FFmpeg resolves relative HLS segment URLs correctly.Details
Problem
The EON CDN requires the seek timestamp (
t=) inside an AES-CBC encrypted payload. ffmpegdirect's catchup mechanism can only substitute{utc}in the URL but cannot re-encrypt the payload. Additionally, reusing the same session ID across seeks causes the CDN to reject requests with HTTP 403.Solution
StreamRedirectProxy) listens on a random loopback porthttp://127.0.0.1:<port>/stream?t={utc}ctimein sync with the CDNFiles changed
StreamRedirectProxy.cpp/.h— New local redirect proxy with AES encryptionPVREon.cpp—GetStreamTimes(), proxy setup inGetStreamProperties(), live EPG fetching for progress barPVREon.h— New members for playback state tracking and proxyCMakeLists.txt— Added new source filesTest plan
🤖 Generated with Claude Code