-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Add YouTube Most Replayed visualization to the player seekbar #13443
Copy link
Copy link
Open
Labels
GUIIssue is related to the graphical user interfaceIssue is related to the graphical user interfaceUXRelating to improving user experienceRelating to improving user experienceYouTubeService, https://www.youtube.com/Service, https://www.youtube.com/feature requestIssue is related to a feature in the appIssue is related to a feature in the apprequires extractor changeThis issue requires a change to the extractorThis issue requires a change to the extractor
Metadata
Metadata
Assignees
Labels
GUIIssue is related to the graphical user interfaceIssue is related to the graphical user interfaceUXRelating to improving user experienceRelating to improving user experienceYouTubeService, https://www.youtube.com/Service, https://www.youtube.com/feature requestIssue is related to a feature in the appIssue is related to a feature in the apprequires extractor changeThis issue requires a change to the extractorThis issue requires a change to the extractor
Checklist
Feature description
I have implemented a feature to show the YouTube "Most Replayed" graph (heatmap) directly over the video player's seek bar.
I already wrote the code for both the Extractor and the App:
Extractor side: I added a new StreamHeatmapEntry model. The logic hooks into YoutubeStreamExtractor to parse the MARKER_TYPE_HEATMAP and heatMarkerRenderer objects directly from the YouTube player response JSON (extracting startMillis, durationMillis, and intensityScoreNormalized). The initial inspiration for extracting this data came from the youtube-heatmap-clipper repository, but instead of complex SVG math, I adapted it to purely parse the native JSON response.
App side: I migrated FocusAwareSeekBar and VideoPlayerUi to Kotlin. In the seek bar, I overrode the onDraw method to map the StreamHeatmapEntry list into a smooth cubic Bezier path (quadTo), drawing a semi-transparent layer over the track that accurately represents the retention peaks of the video.
I am opening this issue to discuss if the maintainers are interested in this feature before I open the formal Pull Requests.
Why do you want this feature?
Finding the most interesting or viral parts of long videos (like podcasts, tutorials, or streams) is currently difficult without skipping blindly.
YouTube already provides this UX on their official clients ("Most Replayed"). Bringing this to NewPipe significantly improves navigation for long-form content, letting users instantly see where the highest retention points are. Since the data is already in the initial JSON response, it doesn't require extra network requests.
Additional information
The code is currently working in my forks. You can check the exact implementation details here:
If the core idea is accepted, I can open the Pull Requests right away. Let me know if there are any UI/UX or architectural adjustments you'd like me to make beforehand!