@@ -18,6 +18,7 @@ A production-ready TV application template built with React Native, supporting A
1818- [ Project Structure] ( #project-structure )
1919- [ Technologies] ( #technologies )
2020- [ Contributing] ( #contributing )
21+ - [ Troubleshooting] ( #troubleshooting )
2122- [ License] ( #license )
2223
2324## Features
@@ -36,6 +37,32 @@ A production-ready TV application template built with React Native, supporting A
3637- ** Dynamic Hero Banner** : Header image that updates based on focused content
3738- ** Detail Screens** : Rich content detail pages with metadata and actions
3839
40+ ### Video Player Features
41+
42+ - ** Overlay Controls** : Custom video controls with spatial navigation support
43+ - Play/pause button with visual state
44+ - Seek bar with current time and duration display
45+ - Exit button to return to previous screen
46+ - Auto-hide after 5 seconds of inactivity
47+ - ** Buffering Indicators** : Visual feedback during video loading and seeking
48+ - ** Remote Control Integration** : Full support for play/pause, seek forward/backward (10s intervals), and exit
49+ - ** Platform Optimizations** :
50+ - Native controls on iOS/tvOS
51+ - Custom overlay on Android TV, Fire TV, and Web
52+ - Hardware-accelerated rendering on Fire TV Vega with W3C Media APIs
53+
54+ ### Dynamic Content Loading
55+
56+ - ** External Catalog API** : Fetch movie content dynamically from remote JSON endpoint
57+ - ** Rich Metadata Support** :
58+ - Genres, ratings, and content ratings
59+ - Release year and duration
60+ - Trending flags
61+ - Multiple video source formats
62+ - ** Type-Safe Transforms** : Automatic conversion from catalog API format to UI-ready data structures
63+ - ** Error Handling** : Graceful fallback and error states for failed API requests
64+ - ** Extensible** : Easy to swap catalog endpoint or add new metadata fields
65+
3966### Architecture
4067
4168- ** Monorepo Structure** : Yarn workspaces with apps and shared packages
@@ -340,6 +367,27 @@ The project includes platform-specific remote control managers:
340367
341368All managers implement ` RemoteControlManagerInterface ` and integrate with ` react-tv-space-navigation ` .
342369
370+ #### Remote Control Key Mappings
371+
372+ The following keys are supported across all platforms in the video player:
373+
374+ | Key/Button | Action | Platforms |
375+ | ------------- | ------------------------------- | ---------------------- |
376+ | PlayPause | Toggle play/pause | All |
377+ | Select/Enter | Activate focused item | All |
378+ | Back | Exit player or go back | All |
379+ | Left | Seek backward 10 seconds | All (in player) |
380+ | Right | Seek forward 10 seconds | All (in player) |
381+ | FastForward | Seek forward 10 seconds | All (in player) |
382+ | Rewind | Seek backward 10 seconds | All (in player) |
383+ | Up/Down | Navigate menu items | All (in navigation) |
384+
385+ ** Platform-Specific Notes:**
386+ - ** iOS/tvOS** : Uses native video controls by default; custom overlay disabled
387+ - ** Android TV/Fire TV** : Custom overlay with spatial navigation for all controls
388+ - ** Web** : Keyboard support with arrow keys and spacebar for play/pause
389+ - ** Fire TV Vega** : Hardware-accelerated video with W3C Media APIs
390+
343391### Testing
344392
345393``` bash
@@ -402,6 +450,84 @@ Contributions are welcome! This project is an open-source sample designed to hel
402450- Ensure all tests pass before submitting PR
403451- Use conventional commit messages
404452
453+ ## Troubleshooting
454+
455+ ### iOS Build Issues
456+
457+ ** Error: "can't access lexical declaration 'X' before initialization"**
458+ - This typically occurs when functions are referenced before they're defined
459+ - Solution: Functions should be defined before useEffect hooks that reference them
460+
461+ ** Error: "No such file or directory: node"**
462+ - The Xcode build can't find the Node.js binary
463+ - Solution: Update ` apps/expo-multi-tv/ios/.xcode.env.local ` with correct Node path:
464+ ``` bash
465+ export NODE_BINARY=/opt/homebrew/bin/node # or your node path
466+ ```
467+ - Find your node path with: ` which node `
468+ - Note: ` .xcode.env.local ` is gitignored (machine-specific configuration)
469+
470+ ** Pods Installation Issues**
471+ - Clean and reinstall:
472+ ``` bash
473+ cd apps/expo-multi-tv/ios
474+ rm -rf Pods Podfile.lock
475+ pod install
476+ ```
477+
478+ ### Android TV Build Issues
479+
480+ ** Metro Bundler Port Conflicts**
481+ - If port 8081 is in use:
482+ ``` bash
483+ yarn start --port 8082
484+ ```
485+
486+ ** ADB Device Not Found**
487+ - Ensure Android TV/Fire TV is connected:
488+ ``` bash
489+ adb devices
490+ adb connect < device-ip> :5555
491+ ```
492+
493+ ### Fire TV Vega Issues
494+
495+ ** Vega SDK Not Found**
496+ - Ensure Vega SDK is installed and in PATH
497+ - Check SDK path: ` echo $KEPLER_SDK_HOME `
498+ - Download from: [ Amazon Vega Developer Portal] ( https://developer.amazon.com/vega )
499+
500+ ### Web Platform Issues
501+
502+ ** Video Player White Screen**
503+ - Check browser console for JavaScript errors
504+ - Ensure catalog API is accessible
505+ - Verify video URLs are CORS-enabled
506+
507+ ** Spatial Navigation Not Working**
508+ - Use keyboard arrows for navigation on web
509+ - Focus management requires keyboard or gamepad input
510+
511+ ### Common Issues
512+
513+ ** "Module not found" Errors**
514+ - Clear cache and reinstall:
515+ ``` bash
516+ yarn clean:all
517+ yarn install
518+ ```
519+
520+ ** TypeScript Errors**
521+ - Run type checking:
522+ ``` bash
523+ yarn typecheck
524+ ```
525+
526+ ** Video Playback Issues**
527+ - Verify video URLs are accessible
528+ - Check network connectivity
529+ - Ensure video format is supported (MP4 recommended)
530+
405531## License
406532
407533This project is licensed under the MIT-0 License - see the [ LICENSE] ( ./LICENSE ) file for details.
0 commit comments