A dedicated section in the app's navigation bar.
The system treats "Filmography" and "Popular Videos" differently to optimize performance.
| Feature | Filmography (Movies/Series) | Popular Videos (Shorts/Clips) | | :--- | :--- | :--- | | File Size | Large (1GB - 10GB+) | Small (50MB - 500MB) | | Download Strategy | Aggressive Pre-fetching: Suggest downloading the next episode in a series automatically. | Instant Gratification: Prioritize speed; start download immediately at default quality. | | Metadata | Rich Data: Include full cast list, subtitles (multiple languages), and chapter markers. | Basic Data: Title, creator name, and basic captions. | | Offline Behavior | Allow users to rate or add to "Watchlist" while offline; sync changes when back online. | Allow sharing the video link (copies link to clipboard) even if the file is offline. |
After download completes, the video player must:
ExoPlayer (Android) snippet:
val localFile = File(context.filesDir, "filmography/oppenheimer.mp4")
val uri = if (localFile.exists())
localFile.toUri()
else
Uri.parse(remoteStreamingUrl)
player.setMediaItem(MediaItem.fromUri(uri))
AVPlayer (iOS):
let localUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] .appendingPathComponent("oppenheimer.mp4")
if FileManager.default.fileExists(atPath: localUrl.path) playerItem = AVPlayerItem(url: localUrl) else playerItem = AVPlayerItem(url: remoteURL)
YouTube Premium officially allows downloads, but with a catch: you lose access to the download if the video becomes private or if your subscription lapses.
For free mobile downloads of popular YouTube videos (use cautiously for personal backup only):