Un lecteur vidéo professionnel pour React Native basé sur libVLC, offrant des performances exceptionnelles et une compatibilité étendue avec de nombreux formats multimédia.
- Lecture multimédia avancée : Support de nombreux formats (MP4, AVI, MKV, MOV, FLV, etc.)
- Streaming en temps réel : HLS, DASH, RTMP, RTSP
- Interface utilisateur riche : Contrôles personnalisables avec thèmes dark/light
- Gestion des pistes : Sélection audio et sous-titres multi-langues
- Mode plein écran : Support natif avec gestion automatique de la StatusBar
- Performance optimisée : Décodage matériel et gestion mémoire intelligente
- TypeScript complet : Types stricts pour une meilleure expérience développeur
- Hooks personnalisés :
useVLCPlayer,useFullscreenpour une intégration facile - Système de profiling : Métriques de performance en temps réel
- Accessibilité : Support complet des lecteurs d'écran
- Tests exhaustifs : 144 tests unitaires et d'intégration
- iOS : 12.0+ (MobileVLCKit 4.0.0a2)
- Android : API 21+ (libVLC 3.6.2)
- React Native : 0.73.0+
npm install react-native-vlc-pro
# ou
yarn add react-native-vlc-proAjoutez à votre ios/Podfile :
pod 'react-native-vlc-pro', :path => '../node_modules/react-native-vlc-pro'La configuration Android est automatique grâce à l'auto-linking.
import React from 'react';
import { View } from 'react-native';
import { VLCPlayer } from 'react-native-vlc-pro';
export default function App() {
return (
<View style={{ flex: 1 }}>
<VLCPlayer
source={{ uri: 'https://example.com/video.mp4' }}
style={{ flex: 1 }}
autoPlay={true}
onReady={() => console.log('Lecteur prêt')}
onPlay={() => console.log('Lecture démarrée')}
onPause={() => console.log('Lecture en pause')}
onError={(error) => console.log('Erreur:', error)}
/>
</View>
);
}import React from 'react';
import { View } from 'react-native';
import { VLCPlayer, useVLCPlayer } from 'react-native-vlc-pro';
export default function App() {
const { player, controls } = useVLCPlayer({
source: { uri: 'https://example.com/video.mp4' },
autoPlay: true,
});
return (
<View style={{ flex: 1 }}>
<VLCPlayer ref={player} style={{ flex: 1 }} />
{/* Vos contrôles personnalisés */}
</View>
);
}import React from 'react';
import { View } from 'react-native';
import { VLCPlayer, VideoControlsAdvanced } from 'react-native-vlc-pro';
export default function App() {
return (
<View style={{ flex: 1 }}>
<VLCPlayer
source={{ uri: 'https://example.com/video.mp4' }}
style={{ flex: 1 }}
/>
<VideoControlsAdvanced
theme="dark"
showFullscreenButton={true}
showTrackSelector={true}
showVolumeControl={true}
/>
</View>
);
}import { VLCPlayer, VideoControlsAdvanced } from 'react-native-vlc-pro';
// Thème personnalisé
const customTheme = {
primary: '#FF6B6B',
secondary: '#4ECDC4',
background: 'rgba(0, 0, 0, 0.8)',
text: '#FFFFFF',
accent: '#FFE66D',
opacity: 0.9,
borderRadius: 8,
};
<VideoControlsAdvanced
theme="custom"
customTheme={customTheme}
controlsConfig={{
showPlayPause: true,
showSeekBar: true,
showTime: true,
showFullscreen: true,
showVolume: true,
showTrackSelector: true,
}}
/>import { PerformanceProfiler, PerformanceUtils } from 'react-native-vlc-pro';
// Initialiser le profiler
const profiler = new PerformanceProfiler({
enableProfiling: true,
maxStartupTime: 3000,
minFPS: 24,
maxMemoryUsage: 200,
});
// Démarrer le profiling
profiler.startProfiling();
// Obtenir les métriques
const metrics = profiler.getMetrics();
console.log('Temps de démarrage:', metrics.startupTime);
console.log('FPS moyen:', metrics.averageFPS);
console.log('Utilisation mémoire:', metrics.memoryUsage);| Prop | Type | Description |
|---|---|---|
source |
MediaSource |
Source du média (URI, fichier local) |
autoPlay |
boolean |
Lecture automatique |
loop |
boolean |
Lecture en boucle |
muted |
boolean |
Son coupé |
volume |
number |
Volume (0-100) |
rate |
number |
Vitesse de lecture |
onReady |
() => void |
Lecteur prêt |
onPlay |
() => void |
Lecture démarrée |
onPause |
() => void |
Lecture en pause |
onError |
(error) => void |
Erreur de lecture |
onProgress |
(data) => void |
Progression de lecture |
useVLCPlayer(config): Hook principal du lecteuruseFullscreen(): Gestion du mode plein écran
VideoControls: Contrôles basiquesVideoControlsAdvanced: Contrôles avancés avec thèmesTrackSelector: Sélecteur de pistes audio/sous-titres
# Lancer tous les tests
npm test
# Tests avec couverture
npm run test:coverage
# Tests de performance
npm run test:performance- Support Picture-in-Picture
- Filtres vidéo avancés
- Capture d'écran/vidéo
- Streaming adaptatif amélioré
- Support VR/360°
- Sous-titres personnalisés
- Playlist avancée
- Chromecast/AirPlay
Les contributions sont les bienvenues ! Consultez notre guide de contribution.
- Fork le projet
- Créez votre branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- VideoLAN pour libVLC
- React Native Community pour les outils
- Tous les contributeurs qui ont rendu ce projet possible
- 📧 Email : contact@react-native-vlc.com
- 🐛 Issues : GitHub Issues
- 💬 Discussions : GitHub Discussions
Fait avec ❤️ par l'équipe React Native VLC