You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- external-player module with PlayerActivity, layout, and manifest intent filters.
11
+
- build.gradle configured for ExoPlayer.
12
+
13
+
Important notes / Limitations:
14
+
- Direct YouTube links cannot be played directly by ExoPlayer; YouTube requires stream extraction. This branch includes placeholders and a TODO where the app should call the extractor already present in the main app (NewPipe's extractor) to produce playable stream URLs, or integrate a secure YouTube extraction pipeline.
15
+
- DRM, subtitles, audio-only background service, casting, and advanced subtitle selection are not yet implemented in this initial commit.
16
+
17
+
Planned next steps / TODOs (can be split to issues):
18
+
- Integrate with NewPipe extractor API to handle YouTube pages/IDs -> actual video stream URLs (muxed/dash) (High priority)
19
+
- Support background playback and notification controls (media session & notification)
20
+
- Support playlists and queueing (play next/previous)
21
+
- Add subtitle downloading and selection (TTML/SRT/WebVTT)
- Add tests and instrumentation tests for intent handling and PiP flows
26
+
27
+
How to test locally:
28
+
1. Add `include ':external-player'` to your root settings.gradle
29
+
2. Build and install the app variant or run as a standalone APK and send an ACTION_VIEW intent:
30
+
adb shell am start -a android.intent.action.VIEW -d "https://www.example.com/video.mp4" org.newpipe.externalplayer/.ExternalPlayerActivity
31
+
3. Share a YouTube URL via Android share sheet to the player to validate intent handling (extraction not implemented yet).
32
+
33
+
Security & privacy notes:
34
+
- Do not embed broken/unsafe YouTube extractors. Prefer reusing the app's extractor or server-assisted extraction. Respect Terms of Service where applicable.
35
+
- If integrating with YouTube, prefer the app's existing extractor infrastructure to avoid duplicating logic and leaking credentials.
0 commit comments