Fix iOS HLS H265 Video Playback in React Native App

Замовник: AI | Опубліковано: 05.11.2025
Бюджет: 300 $

** Goal ** Deliver reliable iOS playback of HEVC (H.265) over HLS by adopting canonical HLS packaging (master + variants, CODECS with hvc1, fMP4 .m4s segments with init.mp4) and using a minimal, robust player configuration. Android already works; do not regress it. ** About ReelRecs ** ReelRecs (https://reelrecs.com) is a mobile app that personalizes movie and TV discovery using a ranking-first UX. We’re shipping React Native for iOS/Android and need short trailers/clips to play flawlessly on iOS with efficient HEVC to keep bandwidth low. ** The Problem (What’s broken) ** We stream HLS videos encoded as HEVC/H.265. Android plays fine; iOS does not (poster loads, no playback). We know iOS is strict about CMAF/fMP4 .m4s segments, init.mp4, correct CODECS="hvc1…" in the master playlist, and #EXT-X-VERSION:7 + #EXT-X-INDEPENDENT-SEGMENTS. We’ve moved toward that structure but still see iOS failures. We suspect packaging strictness and/or react-native-video iOS behavior. Important constraint: We must use H.265/HEVC. H.264 is not an option for this project due to file size/bitrate tradeoffs. ** Scope & Goals ** This is a focused, proof‑oriented engagement to find and document the working recipe. You are not re‑encoding our whole library—just 2–3 samples that prove the approach. Your two core goals: 1 - Encoding/Pipeline: Define and demonstrate the correct encoding + packaging from raw .mp4 → HLS (HEVC/H.265) with fMP4 (.m4s) segments and init.mp4, producing 360p, 480p, 720p variants and a compliant master m3u8 with hvc1 codec strings. (Use FFmpeg and/or Bento4; scripts are a deliverable.) 2 - App Playback on iOS: Hard‑code 2–3 test URLs into our RN app and show smooth playback on physical iOS devices (Android must remain unaffected). If needed, you may propose upgrading react-native-video to v7.x with a clear test plan. ** Deliverables ** A. Code changes in a GitHub feature branch (we’ll add you) that enable iOS playback of the HEVC HLS samples in our current app (RN 0.77.x; react-native-video currently v6.17.0). B. Repeatable encoding scripts (bash or Python) showing exactly how to produce 360p/480p/720p HEVC/HLS with fMP4 segments, init.mp4, proper CODECS strings (hvc1), and compliant master + variant playlists. Include flags like -tag:v hvc1, fMP4 segmentation, independent segments, and 4–6s segment duration. C. A concise README.md describing: required playlist lines (e.g., #EXT-X-VERSION:7, #EXT-X-INDEPENDENT-SEGMENTS, #EXT-X-MAP), directory layout, validation steps, and any RN/iOS player settings you touched. Also include how to validate in iOS Safari and with Apple’s mediastreamvalidator. Out of scope: Re‑encoding our full catalog, broad UI refactors, DRM, and non‑HEVC fallbacks. (We may consider a react-native-video upgrade if that’s demonstrably required for iOS HEVC.) ** Acceptance Criteria (Definition of Done) ** Safari works: Each sample master.m3u8 plays in iOS Safari on a physical device. (This isolates packaging from the app.) Validator clean: mediastreamvalidator shows no critical errors (codec tag, init map, CMAF/fMP4 structure, versioning). In‑app iOS playback: The same URLs play in our iOS app (no black screen; normal controls; audible video). Android remains unaffected. Reproducibility: We can run your scripts on a new raw .mp4 and obtain a working HEVC/HLS set (360p/480p/720p) and master playlist that passes the two tests above. ** Our Environment (for context) ** Repo/Branch: We’ll provide GitHub access; active dev branch is wmg/test. Stack: React Native 0.77.x, TypeScript, Redux Toolkit, react-native-video 6.17.0 (open to v7.x if justified). Xcode 15; physical iOS device testing expected. ** What we expect from you (must‑haves) ** Deep knowledge of HLS packaging for iOS, AVFoundation/AVPlayer, CMAF/fMP4, FFmpeg/Bento4, CODECS="hvc1" vs hev1, playlist construction, and Apple validation tooling. Real React Native iOS experience integrating HLS/HEVC, ideally with react-native-video. Ability to explain decisions and document a pipeline we can scale. ** How to Bid (no auto‑bids; no generic LLM drafts) ** To be considered, send a PM with the following (short but specific): Your HEVC iOS packaging recipe: a minimal FFmpeg or Bento4 command you’d start with to produce HEVC HLS (360p/480p/720p), using fMP4 segments and -tag:v hvc1, plus one master playlist #EXT-X-STREAM-INF example line you expect iOS to accept. (Plain text is fine.) In 2–4 sentences, explain why hvc1 matters vs hev1 on iOS and how you ensure the hvc1 brand actually shows up in the init/bitstream. How you validate with mediastreamvalidator and what the most common failure looks like (and how you’d fix it). A one‑paragraph plan to test in Safari first, then in‑app, and whether you’d consider react-native-video v7.x (why/why not). One relevant iOS video/HLS project you’ve shipped and your role. Filter phrase: Begin your PM with “I know hvc1.” Proposals missing the 5 answers above will be ignored. ** Collaboration & Access ** You’ll work in a feature branch in our repo; we’ll review via PR. We’ll provide 2–3 raw .mp4 test assets and a place to host generated HLS (or you can host temporarily). This engagement is a focused audition. Excellent work can lead to an ongoing role maintaining the iOS side of our RN app (we already have a strong Android RN dev). ** Budget & Timing ** Please propose a fixed price with milestone breakdown for: (1) Packaging validated in Safari, (2) In‑app iOS playback, (3) Scripts + README handoff. (We’ll set milestones accordingly.) Thanks! We’re technical reviewers and will read carefully. If you truly know iOS HLS + HEVC (and React Native video), this is a tight, well‑scoped win with a path to longer‑term work.