Overview
HTTP Live Streaming (HLS) validation ensures your streams meet Apple’s technical specifications and work reliably across all Apple devices. Probe.dev provides Apple’s official MediaStreamValidator tool as a service, eliminating the need for local tool installation while providing comprehensive validation reports.MediaStreamValidator is essential for App Store submissions, streaming service quality assurance, and debugging playback issues across iOS, macOS, and tvOS devices.
Why HLS Validation Matters
App Store Requirements
Mandatory for iOS Apps
Apple requires HLS compliance for video streaming appsRejection Prevention
Avoid App Store rejections due to streaming issues
Apple requires HLS compliance for video streaming appsRejection Prevention
Avoid App Store rejections due to streaming issues
Playback Quality
Universal Compatibility
Ensure streams work across all Apple devicesError Prevention
Catch issues before they reach end users
Ensure streams work across all Apple devicesError Prevention
Catch issues before they reach end users
Specification Compliance
RFC 8216 Standards
Validate against official HLS specificationsFuture-Proofing
Ensure compatibility with upcoming iOS versions
Validate against official HLS specificationsFuture-Proofing
Ensure compatibility with upcoming iOS versions
Debugging Support
Detailed Error Reports
Identify specific compliance violationsRoot Cause Analysis
Pinpoint encoding or packaging issues
Identify specific compliance violationsRoot Cause Analysis
Pinpoint encoding or packaging issues
Getting Started
Basic HLS Validation
Validate an HLS playlist for Apple compliance:Quick Playlist-Only Check
For faster validation during development:Use
parse_playlist_only=true
for rapid iteration during development. Switch to full validation before production deployment.Comprehensive Validation
Full Stream Analysis
For production-ready validation including segment analysis:Parameter Configuration
Parameter | Purpose | Recommended Values |
---|---|---|
parse_playlist_only | Skip segment download/analysis | true for development, false for production |
enable_cli_output | Include raw MediaStreamValidator output | true for debugging |
timeout | Maximum analysis time (milliseconds) | 650000 (10+ minutes for large streams) |
inject_json | Enhanced JSON formatting | true for easier parsing |
Apple HLS Compliance Requirements
Essential Compliance Checks
MediaStreamValidator verifies these critical requirements:Bitrate Ladder Requirements
Bitrate Ladder Requirements
Minimum Requirements:
- At least 3 video quality levels for iOS apps
- 64 kbps audio-only variant required
- Maximum 10 Mbps bitrate for cellular delivery
Segment Duration Standards
Segment Duration Standards
Target Duration:
- 6-second segments recommended
- 10-second maximum for new content
- Consistent duration across quality levels
#EXT-X-TARGETDURATION
accuracy- Segment length consistency
- Discontinuity handling
Codec Requirements
Codec Requirements
Video Codecs:
- H.264 Baseline, Main, or High profile
- HEVC (H.265) for 4K content
- Proper level constraints
- AAC-LC required for all streams
- HE-AAC v1/v2 for low-bitrate variants
- Dolby Digital/Digital Plus for premium content
Closed Caption Compliance
Closed Caption Compliance
Requirements:
- WebVTT format for new implementations
- CEA-608/708 support for broadcast content
- Proper language tagging
- Accessibility compliance
Common Validation Errors
Critical Issues
1
Bitrate Declaration Mismatch
Error:
BANDWIDTH attribute doesn't match measured bitrate
Cause: Playlist declares different bitrate than actual streamSolution:2
Segment Duration Violations
Error:
Segment duration exceeds target duration
Cause: Individual segments longer than #EXT-X-TARGETDURATION
Solution:3
Missing Audio-Only Variant
Error:
No audio-only variant found
Cause: Required 64 kbps audio stream missing from master playlistSolution:Warning-Level Issues
Warnings:
- Inefficient bitrate ladder gaps
- Missing I-frame playlists
- Suboptimal segment counts
Integration Workflows
CI/CD Pipeline Integration
GitHub Actions Example
Jenkins Pipeline
Pre-Publish Validation Script
App Store Submission Workflow
Pre-Submission Checklist
Technical Validation
Technical Validation
- All HLS streams pass MediaStreamValidator
- Audio-only variant present (64 kbps)
- Minimum 3 video quality levels
- Closed captions properly implemented
- Segment durations within specifications
- Bitrate declarations accurate
Device Testing
Device Testing
- Test on iPhone (latest iOS)
- Test on iPad (latest iPadOS)
- Test on Apple TV (latest tvOS)
- Test on Mac (latest macOS Safari)
- Verify cellular vs WiFi behavior
Accessibility Compliance
Accessibility Compliance
- Closed captions available
- Audio descriptions where applicable
- Language tags properly set
- VoiceOver compatibility verified
Documentation for App Review
Include MediaStreamValidator reports in your App Store submission:Performance Optimization
Validation Speed Tips
- Development Phase: Use
parse_playlist_only=true
- Staging Phase: Full validation with reasonable timeout
- Production Phase: Validate representative samples
- CI/CD: Parallel validation of multiple streams
Recommended Timeouts
Stream Type | Recommended Timeout | Reasoning |
---|---|---|
Short clips (< 5 min) | 2-3 minutes | Quick analysis |
Standard content (5-60 min) | 5-8 minutes | Thorough checking |
Long-form content (> 1 hour) | 10-15 minutes | Complete validation |
Live streams | 3-5 minutes | Sample-based analysis |
Troubleshooting
Common Issues and Solutions
Timeout Errors
Timeout Errors
Symptoms: Analysis times out before completionSolutions:
- Increase
timeout
parameter (max 650,000ms) - Use
parse_playlist_only=true
for faster validation - Validate shorter content samples first
- Check network connectivity to stream source
Access Denied Errors
Access Denied Errors
Symptoms: Cannot access stream URLSolutions:
- Verify stream URL is publicly accessible
- Check CDN/server allows HEAD requests
- Ensure proper CORS headers if needed
- Test URL accessibility from external networks
Incomplete Validation
Incomplete Validation
Symptoms: Partial results or missing analysisSolutions:
- Set
parse_playlist_only=false
for complete analysis - Increase timeout for large streams
- Check stream availability during validation
- Verify all referenced segments are accessible
Debugging with CLI Output
Enable detailed output for troubleshooting:Best Practices
Development Workflow
- Validate frequently during encoding
- Use playlist-only validation for quick checks
- Automate validation in build pipelines
- Keep validation reports for debugging
Production Deployment
- Full validation before CDN upload
- Validate after CDN propagation
- Monitor validation results over time
- Document compliance for App Store
Performance
- Cache validation results for unchanged content
- Validate samples of long-form content
- Use appropriate timeouts for content length
- Parallel validation for multiple streams
Quality Assurance
- Validate across all bitrate variants
- Test accessibility features
- Verify closed caption compliance
- Check audio-only variant functionality
Next Steps
Streaming Analysis
Learn about comprehensive streaming format analysis
Report Types
Understand all available analysis tools
Sample Library
Test validation with sample HLS streams
API Reference
Complete MediaStreamValidator API documentation
Need help with HLS validation or App Store submission? Contact our support team at support@probe.dev for personalized assistance with your streaming workflows.