프로젝트 소개

react-native-vlc-media-player는 React Native 애플리케이션을 위한 VLC 기반 미디어 재생 컴포넌트를 제공합니다. 이 패키지는 직접 플레이어 제어를 위한 `VLCPlayer`와 제목, 뒤로 가기, 자동 재생 등의 UI 옵션을 갖춘 상위 수준 뷰인 `VlCPlayerView`를 내보냅니다. 지원되는 네트워크 소스에는 VLC를 통해 제공되는 RTSP, RTP, RTMP, HLS, MMS, HTTP, FTP, UDP 및 기타 프로토콜이 포함됩니다. README에서는 MKV, MP4, AVI, FLV, Ogg, MPEG 트랜스포트 스트림, H.264, H.265, AV1, VP8/VP9, AAC, MP3, FLAC, Opus, AC3, DTS를 포함한 광범위한 형식 지원을 나열합니다. 또한 5.1을 포함한 다중 오디오 트랙과 SRT, WebVTT, TTML, SSA/ASS, VobSub, Teletext 같은 자막 형식을 지원합니다. 플레이어 props는 source URI, 로컬 자막 URI, 일시정지 상태, 반복, 재생 속도, 탐색 위치, 볼륨, 음소거, 선택된 오디오 및 텍스트 트랙, 백그라운드 재생, 종횡비, 자동 종횡비, 리사이즈 모드, 자동 재생을 다룹니다. 이벤트 콜백에는 onPlaying, onProgress, onPaused, onStopped, onBuffering, onEnded, onError, onLoad, onRecordingCreated, onSnapshot이 있습니다. Ref 메서드로 현재 스트림을 디렉터리에 녹화하고, 녹화를 중지하고, 프레임 스냅샷을 저장할 수 있습니다. npm 또는 Yarn으로 설치할 수 있으며, Expo가 아닌 프로젝트에서는 React Native 링크를 사용합니다. Android에는 일반적으로 특별한 설정이 필요 없지만, README에는 중복된 `libc++_shared.so` 네이티브 라이브러리에 대한 Gradle 우회 방법이 포함되어 있고 최신 LibVLC 버전에서 Android 12 및 13의 자막 문제가 해결되었다고 안내합니다. iOS 설정은 CocoaPods를 사용하며, iOS 14 이상을 대상으로 하는 앱은 MobileVLCKit이 RTSP 카메라 스트림 같은 소스를 위해 로컬 네트워크에 접근할 수 있으므로 `NSLocalNetworkUsageDescription`이 필요할 수 있습니다. 이 모듈에는 사용자 정의 네이티브 코드가 포함되어 있으므로 Expo Go가 아닌 사용자 정의 개발 빌드를 통해서만 Expo를 지원합니다. 선택적인 iOS VLCKit 및 Android 레거시 Jetifier 설정이 포함된 Expo config plugin이 제공됩니다. README에는 일부 버전에서 알려진 iOS 17 시뮬레이터 크래시가 문서화되어 있으며, 해당 경우 iOS 18 이상 시뮬레이터를 권장합니다. 또한 일부 Android 동영상 종횡비 및 매개변수 처리가 JavaScript 측에서 완전히 구현되지 않았다는 미해결 TODO도 나열합니다.