Video Streaming

Professional video transcoding with adaptive streaming, instant delivery, and automatic processing for any device or connection.

Welcome to RIXL Video Streaming — where every video becomes a streaming powerhouse. Upload any format and get back professional HLS & DASH streams with adaptive quality, instant thumbnails, and global CDN delivery.

Quick Actions

How RIXL Transforms Your Videos

Upload Any Format

Drop in MP4, MOV, AVI, WebM, or any video format. RIXL accepts files up to 2GB each.

Choose Quality Tier

Select Basic (720p), Shorts (1080p), or Pro (4K) based on your content and audience needs.

Automatic Processing

RIXL creates multiple quality levels, generates thumbnails, and prepares HLS streams automatically.

Global CDN Delivery

Your processed videos are distributed to 200+ edge locations worldwide for instant streaming anywhere.

Video Processing Features

Adaptive HLS Streaming

Multiple quality levels that automatically adjust based on connection speed and device capabilities.

Instant Thumbnails

Automatic thumbnail generation in AVIF format with smart frame selection.

Quality Tiers

Basic (720p), Shorts (1080p), Pro (4K) processing options for different use cases.

Progress Tracking

Real-time processing status and progress monitoring through dashboard and API.

Global CDN

Edge caching and intelligent routing for instant video delivery worldwide.

Smart Compression

Optimal encoding settings that balance file size and visual quality automatically.

Quality Tiers

Choose the right processing tier for your content and audience:

Perfect for:

  • Web content and tutorials
  • Desktop-focused viewing
  • Fast processing requirements
  • Bandwidth-conscious delivery

Specifications:

  • 720p HD maximum resolution
  • 24fps/30fps frame rates
  • Fastest processing times (~1x video length)
  • Smallest file sizes
  • Ideal for educational content and web videos

Perfect for:

  • Social media content
  • Mobile-first experiences
  • Vertical video content
  • 60fps smooth motion

Specifications:

  • 1080p Full HD maximum
  • Up to 60fps frame rates
  • Mobile-ready encoding
  • Medium processing times (~1.5x video length)
  • Perfect for social platforms and mobile viewing

Perfect for:

  • Professional broadcasts
  • 4K/HDR content
  • Premium streaming experiences
  • Production-quality output

Specifications:

  • 4K Ultra HD support
  • Up to 60fps with HDR
  • Professional audio processing
  • Longest processing times (~2-3x video length)
  • Cinema-quality output for premium content

Implementation Examples

React Component Usage

import {Video} from '@rixl/videosdk-react';

function VideoPlayer({videoId}) {
return (
<Video
id={videoId}
   className="w-full h-auto rounded-lg"
   progressBar={true}
   allowFullscreen={true}
   autoplay={false}
   muted={false}
/>
);
}
import {Video, useProgressBar} from '@rixl/videosdk-react';
import {useRef} from 'react';

function AdvancedVideoPlayer({videoId, onComplete}) {
const videoRef = useRef(null);
const {progress, duration, isPlaying} = useProgressBar({video: videoRef.current});

return (
<div className="video-container">
<Video
ref={videoRef}
   id={videoId}
   className="w-full h-auto rounded-lg shadow-lg"
   progressBar={true}
   allowFullscreen={true}
   controls={true}
   poster={`https://cdn.rixl.com/${videoId}/thumbnail.jpg`}
   onPlay={() => console.log('Video started')}
   onPause={() => console.log('Video paused')}
   onEnded={onComplete}
/>

<div className="video-info mt-4 p-4 bg-gray-100 rounded">
<div className="flex justify-between items-center">
  <span>Progress: {Math.round(progress * 100)}%</span>
  <span>Duration: {Math.round(duration)}s</span>
  <span className={`status ${isPlaying ? 'text-green-600' : 'text-gray-600'}`}>
          {isPlaying ? 'Playing' : 'Paused'}
        </span>
</div>
</div>
</div>
);
}
import {Video, useProgressBar} from '@rixl/videosdk-react';
import {useState, useRef} from 'react';

function CustomVideoPlayer({videoId}) {
const videoRef = useRef(null);
const {progress, duration, isPlaying} = useProgressBar({video: videoRef.current});
const [showControls, setShowControls] = useState(true);

const handlePlayPause = () => {
if (videoRef.current) {
if (isPlaying) {
videoRef.current.pause();
} else {
videoRef.current.play();
}
}
};

const handleSeek = (value) => {
if (videoRef.current && duration) {
videoRef.current.currentTime = value * duration;
}
};

return (
<div
className="relative video-container"
onMouseEnter={() => setShowControls(true)}
   onMouseLeave={() => setShowControls(false)}
>
<Video
  ref={videoRef}
  id={videoId}
  className="w-full h-auto"
  progressBar={false}
  controls={false}
  allowFullscreen={true}
/>

{showControls && (
  <div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/70 to-transparent p-4">
    <div className="flex items-center gap-4">
      <button
        onClick={handlePlayPause}
        className="text-white hover:text-gray-300"
      >
        {isPlaying ? '⏸️' : '▶️'}
      </button>

      <div className="flex-1">
        <input
          type="range"
          min="0"
          max="1"
          step="0.01"
          value={progress}
          onChange={(e) => handleSeek(parseFloat(e.target.value))}
          className="w-full"
        />
      </div>

      <span className="text-white text-sm">
            {Math.round(progress * duration)}s / {Math.round(duration)}s
          </span>
    </div>
  </div>
)}
</div>
);
}

API Integration

// Initialize video upload with quality tier
const uploadVideo = async (videoFile, qualityTier = 'pro') => {
const initResponse = await fetch('https://api.rixl.com/videos/upload/init', {
method: 'POST',
headers: {
'X-API-Key': 'YOUR_PROJECT_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
file_name: videoFile.name,
video_quality: qualityTier,
image_format: 'jpg'
})
});

const {video_id, video_presigned_url, upload_expires} = await initResponse.json();

// Upload file to presigned URL
await fetch(video_presigned_url, {
method: 'PUT',
body: videoFile,
headers: {
'Content-Type': videoFile.type
}
});

return video_id;
};
// Monitor video processing status
const monitorProcessing = async (videoId) => {
const checkStatus = async () => {
const response = await fetch(`https://api.rixl.com/videos/${videoId}`, {
headers: {
'X-API-Key': 'YOUR_PROJECT_API_KEY'
}
});

const result = await response.json();
return result.data;
};

// Poll every 5 seconds until processing is complete
return new Promise((resolve) => {
const interval = setInterval(async () => {
const video = await checkStatus();

console.log(`Processing status: ${video.file.status}`);

if (video.file.status === 'ready') {
clearInterval(interval);
resolve(video);
} else if (video.file.status === 'error') {
clearInterval(interval);
throw new Error('Video processing failed');
}
}, 5000);
});
};
// Get video details and streaming URLs
const getVideoDetails = async (videoId) => {
const response = await fetch(`https://api.rixl.com/videos/${videoId}`, {
headers: {
'X-API-Key': 'YOUR_PROJECT_API_KEY'
}
});

const result = await response.json();
const video = result.data;

return {
id: video.id,
duration: video.duration,
width: video.width,
height: video.height,
streamingUrl: video.file.url,
thumbnailUrl: `https://cdn.rixl.com/${video.id}/thumbnail.jpg`,
status: video.file.status,
createdAt: video.created_at
};
};

Real-World Use Cases

Video Streaming Platform

Netflix-style streaming with adaptive quality, progress tracking, and global delivery.

Live Event Streaming

Professional broadcasts with multiple quality levels and real-time delivery.

Social Media Integration

Seamlessly embed videos on social platforms with mobile-ready encoding.

E-Learning Platforms

Deliver educational content with fast load times and reliable playback.

Marketing & Advertising

High-impact video ads with instant delivery and global reach.

Enterprise Video Solutions

Secure and scalable video infrastructure for internal and external use.

Performance Benefits

Adaptive Streaming

Automatic quality adjustment based on connection speed prevents buffering.

Global CDN

200+ edge locations ensure instant video delivery worldwide.

Smart Compression

Optimal encoding reduces file sizes while maintaining visual quality.

What's Next?

Ready to stream your videos? Choose your approach:

Ready to stream?

Start with our Video Upload Guide to see HLS streaming in action, or jump into the React Component Guide to add professional video players to your application. For custom workflows, explore our API Documentation.