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!
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!