@eleven-am/transcoder
Version:
High-performance HLS transcoding library with hardware acceleration, intelligent client management, and distributed processing support for Node.js
49 lines • 1.64 kB
TypeScript
import { TaskEither } from '@eleven-am/fp';
import { MediaMetadata, VideoQuality } from './types';
export interface AdaptiveQualityResult {
selectedQualities: VideoQuality[];
reason: string;
complexityScore: number;
}
/**
* Analyzes video content and selects optimal quality levels
* Prevents upscaling and adjusts bitrates based on content complexity
*/
export declare class AdaptiveQualitySelector {
private readonly qualityLevels;
/**
* Select optimal quality levels based on source video characteristics
*/
selectOptimalQualities(metadata: MediaMetadata): TaskEither<AdaptiveQualityResult>;
/**
* Get recommended quality based on network conditions
*/
getRecommendedQuality(availableBandwidth: number, qualities: VideoQuality[]): TaskEither<VideoQuality>;
/**
* Analyze video complexity based on metadata - TaskEither version
*/
private analyzeComplexityTask;
private calculateBitrateFactor;
private adjustScoreForBitrate;
private adjustScoreForFrameRate;
private adjustScoreForCodec;
private adjustScoreForDuration;
private normalizeScore;
/**
* Filter quality levels to prevent upscaling
*/
private filterQualitiesBySource;
/**
* Adjust bitrates based on content complexity
*/
private adjustBitratesForComplexity;
/**
* Add original quality option for high-quality sources
*/
private addOriginalQualityIfNeeded;
/**
* Generate human-readable reason for quality selection
*/
private generateSelectionReason;
}
//# sourceMappingURL=adaptiveQualitySelector.d.ts.map