Overview

Probe.dev can analyze media files from various sources including traditional file formats, adaptive streaming formats (HLS, DASH), and live streaming protocols (RTMP, RTSP, SRT). Simply provide a direct link to your media asset, and our API will securely fetch and analyze it.

Static Media Files

Public URLs

The simplest approach is to provide a direct HTTP/HTTPS URL to your media file:
{
    "url": "https://example.com/videos/sample.mp4"
}
Requirements:
  • Must be publicly accessible
  • Must be a direct link to the media file (not a webpage)
  • Supports HTTP and HTTPS protocols

Streaming Formats

HLS (HTTP Live Streaming)

Analyze HLS playlists and their associated media segments:
{
    "url": "https://probelibrary.s3.amazonaws.com/hls/sample/big_buck_bunny.m3u8"
}
Supported HLS features:
  • Master playlists (multi-bitrate)
  • Media playlists (single bitrate)
  • Video, audio, and subtitle tracks
  • Variant streams analysis
  • Segment information
HLS analysis provides detailed information about adaptive bitrate ladders, segment durations, and track configurations.
For HLS compliance validation against Apple’s specifications, use the dedicated /v1/probe/mediastreamvalidator endpoint. Essential for App Store submissions and debugging playback issues.

DASH (Dynamic Adaptive Streaming)

Examine DASH manifests and media presentations:
{
    "url": "https://cdn.bitmovin.com/content/assets/art-of-motion-dash-hls-progressive/mpds/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mpd"
}
Supported DASH features:
  • Media Presentation Description (MPD) analysis
  • Adaptation sets and representations
  • Video, audio, and text tracks
  • Segment templates and timelines
  • Initialization segments
DASH analysis reveals codec profiles, bitrate ladders, and segment structure for adaptive streaming optimization.

Streaming Protocols

RTMP (Real-Time Messaging Protocol)

Analyze live RTMP streams and Video on Demand (VOD) content:
{
    "url": "rtmp://matthewc.co.uk/vod/scooter"
}
Common RTMP URL formats:
rtmp://server.example.com/live/stream_key
rtmp://server.example.com/vod/video_name
rtmps://secure.example.com/live/stream_key

RTSP (Real Time Streaming Protocol)

Probe RTSP streams for metadata and technical specifications:
{
    "url": "rtsp://server.example.com:554/stream/video"
}
Common RTSP URL formats:
rtsp://server.example.com/stream_name
rtsp://server.example.com:554/live/stream
rtsps://secure.example.com/secure_stream

SRT (Secure Reliable Transport)

Analyze SRT streams for low-latency video delivery:
{
    "url": "srt://server.example.com:1234"
}
SRT URL formats:
srt://server.example.com:port
srt://server.example.com:port?streamid=stream_name
Streaming protocol analysis may have longer processing times compared to static files due to the need to establish connections and buffer content.

Content Types Supported

All streaming formats and protocols support analysis of:

Video Streams

  • Codec identification
  • Resolution and frame rate
  • Bitrate analysis
  • Color space information

Audio Tracks

  • Audio codec details
  • Channel configuration
  • Sample rate and bit depth
  • Bitrate information

Subtitle/Caption Tracks

  • Text track formats
  • Language identification
  • Timing information
  • Accessibility features

Example Analysis Results

HLS Stream Analysis

When analyzing an HLS playlist, you’ll receive information about:
{
  "master_playlist": {
    "variant_streams": [
      {
        "bandwidth": 1200000,
        "resolution": "1280x720",
        "codecs": "avc1.4d401f,mp4a.40.2",
        "uri": "720p.m3u8"
      }
    ]
  },
  "media_segments": {
    "target_duration": 10,
    "sequence_number": 0,
    "segments_count": 180
  }
}

RTMP Stream Analysis

RTMP stream analysis provides real-time stream characteristics:
{
  "stream_info": {
    "video_codec": "H264",
    "audio_codec": "AAC",
    "resolution": "1920x1080",
    "frame_rate": 30,
    "bitrate": 2500000
  }
}

Amazon S3 Integration

Public S3 Buckets

For publicly accessible S3 objects, use the standard S3 URL format:
{
    "url": "https://my-bucket.s3.amazonaws.com/path/to/video.mp4"
}

Key-Based Authorization

For private S3 objects, include your AWS access credentials directly in the URL:
https://KEY:SECRET@s3.amazonaws.com/BUCKET/PATH
s3://KEY:SECRET@BUCKET/PATH
Example:
{
    "url": "https://AKIAIOSFODNN7EXAMPLE:wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY@s3.amazonaws.com/my-bucket/video.mp4"
}
Be careful when using access keys in URLs as they may appear in logs. Consider using presigned URLs for better security.

Presigned URLs

For private S3 objects, create a presigned URL with temporary access:
{
    "url": "https://my-bucket.s3.amazonaws.com/sample-video.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIOSFODNN7EXAMPLE%2F20250506%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20250506T121314Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=9a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1"
}
Benefits:
  • Temporary access (configurable expiration)
  • No credentials in the URL path
  • More secure than embedded keys

Creating Presigned URLs

Other Cloud Storage

Google Cloud Storage

{
    "url": "https://storage.googleapis.com/my-bucket/video.mp4"
}

Azure Blob Storage

{
    "url": "https://mystorageaccount.blob.core.windows.net/my-container/video.mp4"
}

Cloudflare R2

{
    "url": "https://my-bucket.r2.cloudflarestorage.com/video.mp4"
}

CDN and Streaming Services

Probe.dev works with media served through CDNs and streaming platforms:

Content Delivery Networks

  • CloudFront - Amazon’s CDN
  • CloudFlare - Global CDN
  • Fastly - Edge cloud platform
  • KeyCDN - High performance CDN

Streaming Platforms

  • Vimeo - Direct links to video files
  • YouTube - Public video URLs
  • Twitch - VOD direct links
Some platforms require specific URL formats or may have rate limiting. Ensure you’re using direct media file URLs, not embed links.

URL Validation Tips

Valid URL Examples ✅

https://example.com/video.mp4
https://cdn.example.com/media/stream.mkv
https://bucket.s3.amazonaws.com/folder/file.avi
https://probelibrary.s3.amazonaws.com/hls/sample/playlist.m3u8
https://cdn.bitmovin.com/content/manifest.mpd
rtmp://server.com/live/stream_key
rtsp://camera.example.com:554/stream
srt://server.example.com:1234
ftp://server.com/media/video.mov

Invalid URL Examples ❌

https://youtube.com/watch?v=abc123        // Embed page, not direct file
https://example.com/player.html           // HTML player page
https://drive.google.com/file/d/abc       // Google Drive share link
file:///local/path/video.mp4              // Local file path

Security Best Practices

Access Control

  • Use presigned URLs for private content
  • Set appropriate expiration times
  • Limit access to specific IP ranges when possible
  • Monitor access logs for unusual activity

URL Management

  • Don’t embed credentials in URLs when possible
  • Use HTTPS for all media URLs
  • Validate URLs before sending to API
  • Consider URL shortening for very long presigned URLs

Troubleshooting

Common Issues

ErrorCauseSolution
403 ForbiddenPrivate content, credentials missingUse presigned URL or add credentials
404 Not FoundIncorrect URL or file doesn’t existVerify URL and file existence
TimeoutLarge file, slow connection, or stream buffer timeCheck file size, network connectivity, and stream availability
Invalid URLMalformed URLValidate URL format
Stream UnavailableRTMP/RTSP stream offlineVerify stream is active and accessible

Testing Media Sources

Verify your media URL is accessible:
# Test static files with curl
curl -I "https://your-media-url.com/video.mp4"

# Test HLS playlist
curl -I "https://your-hls-url.com/playlist.m3u8"

# Should return HTTP 200 and appropriate Content-Type

Testing Streaming Protocols

# Test RTMP stream with FFprobe
ffprobe -v quiet -print_format json -show_format rtmp://server.com/live/stream

# Test RTSP stream
ffprobe -v quiet -print_format json -show_format rtsp://camera.com:554/stream

Next Steps