Skip to content

Commit cefccc0

Browse files
committed
docs: add comprehensive video player, catalog API, and troubleshooting documentation
- Add Video Player Features section documenting overlay controls, buffering, and platform optimizations - Add Dynamic Content Loading section explaining external catalog API integration - Add Remote Control Key Mappings table with platform-specific notes - Add comprehensive Troubleshooting section covering iOS, Android, Vega, and Web platform issues - Update Table of Contents to include new sections - Document common build errors and their solutions
1 parent d8eceba commit cefccc0

1 file changed

Lines changed: 126 additions & 0 deletions

File tree

README.md

Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

341368
All 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

407533
This project is licensed under the MIT-0 License - see the [LICENSE](./LICENSE) file for details.

0 commit comments

Comments
 (0)