CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-mux--mux-node

Official TypeScript library providing comprehensive client access to Mux's video infrastructure API including asset management, live streaming, analytics, and webhook handling

Overview
Eval results
Files

live-streaming.mddocs/

Live Streaming

Live streaming functionality for creating, managing, and controlling real-time video streams with simulcast support, playback restrictions, and automatic recording options.

Capabilities

Live Stream Creation

Create and configure live streams for real-time video broadcasting.

/**
 * Create a new live stream
 * @param body - Live stream creation parameters
 * @returns Promise resolving to the created live stream
 */
create(body: LiveStreamCreateParams): Promise<LiveStream>;

interface LiveStreamCreateParams {
  /** Playback policies for the live stream */
  playback_policies?: Array<PlaybackPolicy>;
  /** Asset settings for recorded content */
  new_asset_settings?: NewAssetSettings;
  /** Whether to reconnect automatically */
  reconnect_window?: number;
  /** Whether the stream should be reduced latency */
  reduced_latency?: boolean;
  /** Simulcast target configurations */
  simulcast_targets?: Array<CreateSimulcastTargetRequest>;
  /** Test mode flag */
  test?: boolean;
  /** Generated subtitle settings */
  generated_subtitles?: Array<LiveStreamGeneratedSubtitleSettings>;
  /** Embedded subtitle settings */
  embedded_subtitles?: Array<LiveStreamEmbeddedSubtitleSettings>;
}

interface LiveStream {
  /** Unique identifier for the live stream */
  id: string;
  /** Creation timestamp */
  created_at: string;
  /** Stream key for broadcasting */
  stream_key: string;
  /** Current status of the live stream */
  status?: 'idle' | 'active' | 'disabled';
  /** Array of playback IDs */
  playback_ids?: Array<PlaybackID>;
  /** RTMP ingest URL */
  rtmp?: RTMPSettings;
  /** SRT ingest settings */
  srt?: SRTSettings;
  /** Reconnection window in seconds */
  reconnect_window?: number;
  /** Recent asset IDs created from this stream */
  recent_asset_ids?: Array<string>;
}

interface NewAssetSettings {
  /** Playback policies for created assets */
  playback_policies?: Array<PlaybackPolicy>;
  /** MP4 support for created assets */
  mp4_support?: Mp4Support;
  /** Audio normalization for created assets */
  normalize_audio?: boolean;
}

Usage Examples:

// Basic live stream creation
const liveStream = await mux.video.liveStreams.create({
  playback_policies: ["public"],
  new_asset_settings: {
    playback_policies: ["public"],
    mp4_support: "standard",
  },
});

// Advanced live stream with simulcast
const liveStream = await mux.video.liveStreams.create({
  playback_policies: ["signed"],
  reduced_latency: true,
  reconnect_window: 60,
  simulcast_targets: [
    {
      url: "rtmp://live.twitch.tv/live/",
      stream_key: "your-twitch-stream-key",
    },
  ],
  generated_subtitles: [
    {
      language_code: "en",
      name: "English Auto-Generated",
    },
  ],
});

Live Stream Management

Retrieve, update, and manage live stream settings.

/**
 * Retrieve live stream details
 * @param liveStreamId - The live stream identifier
 * @returns Promise resolving to live stream details
 */
retrieve(liveStreamId: string): Promise<LiveStream>;

/**
 * Update live stream settings
 * @param liveStreamId - The live stream identifier
 * @param body - Update parameters
 * @returns Promise resolving to updated live stream
 */
update(liveStreamId: string, body: LiveStreamUpdateParams): Promise<LiveStream>;

interface LiveStreamUpdateParams {
  /** Updated playback policy */
  playback_policies?: Array<PlaybackPolicy>;
  /** Updated asset settings */
  new_asset_settings?: NewAssetSettings;
  /** Updated reconnection window */
  reconnect_window?: number;
  /** Updated latency mode */
  reduced_latency?: boolean;
}

/**
 * List live streams with optional filtering and pagination
 * @param query - Listing parameters
 * @returns Paginated list of live streams
 */
list(query?: LiveStreamListParams): PagePromise<LiveStreamsBasePage, LiveStream>;

interface LiveStreamListParams extends BasePageParams {
  /** Filter by stream status */
  status?: 'active' | 'idle' | 'disabled';
  /** Filter streams created after this timestamp */
  created_at_gte?: string;
}

/**
 * Delete a live stream
 * @param liveStreamId - The live stream identifier
 * @returns Promise that resolves when deletion is complete
 */
delete(liveStreamId: string): Promise<void>;

Stream Control

Control live stream state and lifecycle operations.

/**
 * Complete a live stream and create an asset
 * @param liveStreamId - The live stream identifier
 * @returns Promise that resolves when completion is initiated
 */
complete(liveStreamId: string): Promise<void>;

/**
 * Disable a live stream temporarily
 * @param liveStreamId - The live stream identifier
 * @returns Promise that resolves when stream is disabled
 */
disable(liveStreamId: string): Promise<void>;

/**
 * Enable a previously disabled live stream
 * @param liveStreamId - The live stream identifier
 * @returns Promise that resolves when stream is enabled
 */
enable(liveStreamId: string): Promise<void>;

/**
 * Reset the stream key for a live stream
 * @param liveStreamId - The live stream identifier
 * @returns Promise resolving to updated live stream with new stream key
 */
resetStreamKey(liveStreamId: string): Promise<LiveStream>;

Playback ID Management

Manage playback IDs for live stream access control.

/**
 * Create a playback ID for a live stream
 * @param liveStreamId - The live stream identifier
 * @param body - Playback ID creation parameters
 * @returns Promise resolving to the created playback ID
 */
createPlaybackId(
  liveStreamId: string,
  body: LiveStreamCreatePlaybackIDParams
): Promise<PlaybackID>;

interface LiveStreamCreatePlaybackIDParams {
  /** Access policy for the playback ID */
  policy: PlaybackPolicy;
  /** DRM configuration ID (required for DRM policy) */
  drm_configuration_id?: string;
}

/**
 * Retrieve playback ID details for a live stream
 * @param liveStreamId - The live stream identifier
 * @param playbackId - The playback ID
 * @returns Promise resolving to playback ID details
 */
retrievePlaybackId(liveStreamId: string, playbackId: string): Promise<PlaybackID>;

/**
 * Delete a playback ID from a live stream
 * @param liveStreamId - The live stream identifier
 * @param playbackId - The playback ID to delete
 * @returns Promise that resolves when deletion is complete
 */
deletePlaybackId(liveStreamId: string, playbackId: string): Promise<void>;

Simulcast Management

Add and manage simulcast targets for broadcasting to multiple platforms simultaneously.

/**
 * Create a simulcast target for a live stream
 * @param liveStreamId - The live stream identifier
 * @param body - Simulcast target creation parameters
 * @returns Promise resolving to the created simulcast target
 */
createSimulcastTarget(
  liveStreamId: string,
  body: LiveStreamCreateSimulcastTargetParams
): Promise<SimulcastTarget>;

interface LiveStreamCreateSimulcastTargetParams {
  /** RTMP URL for the simulcast target */
  url: string;
  /** Stream key for the target platform */
  stream_key?: string;
  /** Passthrough data */
  passthrough?: string;
}

interface SimulcastTarget {
  /** Simulcast target identifier */
  id: string;
  /** Target RTMP URL */
  url: string;
  /** Current status of the simulcast */
  status?: 'idle' | 'starting' | 'broadcasting' | 'errored';
  /** Error details if status is errored */
  error_severity?: 'normal' | 'fatal';
}

/**
 * Retrieve simulcast target details
 * @param liveStreamId - The live stream identifier
 * @param simulcastTargetId - The simulcast target identifier
 * @returns Promise resolving to simulcast target details
 */
retrieveSimulcastTarget(
  liveStreamId: string,
  simulcastTargetId: string
): Promise<SimulcastTarget>;

/**
 * Delete a simulcast target
 * @param liveStreamId - The live stream identifier
 * @param simulcastTargetId - The simulcast target identifier
 * @returns Promise that resolves when deletion is complete
 */
deleteSimulcastTarget(liveStreamId: string, simulcastTargetId: string): Promise<void>;

Subtitle Configuration

Configure subtitle generation and embedding for live streams.

/**
 * Update embedded subtitle settings for a live stream
 * @param liveStreamId - The live stream identifier
 * @param body - Embedded subtitle update parameters
 * @returns Promise resolving to updated live stream
 */
updateEmbeddedSubtitles(
  liveStreamId: string,
  body: LiveStreamUpdateEmbeddedSubtitlesParams
): Promise<LiveStream>;

interface LiveStreamUpdateEmbeddedSubtitlesParams {
  /** Array of embedded subtitle configurations */
  embedded_subtitles?: Array<LiveStreamEmbeddedSubtitleSettings>;
}

/**
 * Update generated subtitle settings for a live stream
 * @param liveStreamId - The live stream identifier
 * @param body - Generated subtitle update parameters
 * @returns Promise resolving to updated live stream
 */
updateGeneratedSubtitles(
  liveStreamId: string,
  body: LiveStreamUpdateGeneratedSubtitlesParams
): Promise<LiveStream>;

interface LiveStreamUpdateGeneratedSubtitlesParams {
  /** Array of generated subtitle configurations */
  generated_subtitles?: Array<LiveStreamGeneratedSubtitleSettings>;
}

interface LiveStreamEmbeddedSubtitleSettings {
  /** Display name for the subtitle track */
  name?: string;
  /** Language code (ISO 639-1) */
  language_code?: string;
  /** Passthrough data */
  passthrough?: string;
}

interface LiveStreamGeneratedSubtitleSettings {
  /** Display name for the subtitle track */
  name?: string;
  /** Language code for transcription */
  language_code?: string;
  /** Transcription vocabulary ID */
  transcription_vocabulary_id?: string;
  /** Passthrough data */
  passthrough?: string;
}

Asset Recording Settings

Configure how recorded assets are created from live streams.

/**
 * Update new asset settings for static renditions
 * @param liveStreamId - The live stream identifier
 * @param body - Static rendition update parameters
 * @returns Promise resolving to updated live stream
 */
updateNewAssetSettingsStaticRenditions(
  liveStreamId: string,
  body: LiveStreamUpdateNewAssetSettingsStaticRenditionsParams
): Promise<LiveStream>;

interface LiveStreamUpdateNewAssetSettingsStaticRenditionsParams {
  /** Static rendition settings for recorded assets */
  new_asset_settings?: {
    mp4_support?: Mp4Support;
    normalize_audio?: boolean;
    playback_policies?: Array<PlaybackPolicy>;
  };
}

Types

interface RTMPSettings {
  /** RTMP stream URL */
  stream_url?: string;
  /** RTMP stream key */
  stream_key?: string;
}

interface SRTSettings {
  /** SRT endpoint */
  endpoint?: string;
  /** SRT passphrase */
  passphrase?: string;
}

interface CreateSimulcastTargetRequest {
  /** Target RTMP URL */
  url: string;
  /** Stream key for target */
  stream_key?: string;
  /** Passthrough data */
  passthrough?: string;
}

type Mp4Support = 'none' | 'standard' | 'capped-1080p';
type PlaybackPolicy = 'public' | 'signed' | 'drm';

interface PlaybackID {
  id: string;
  policy: PlaybackPolicy;
  drm_configuration_id?: string;
}

Install with Tessl CLI

npx tessl i tessl/npm-mux--mux-node

docs

analytics-metrics.md

client-setup.md

data.md

delivery-usage.md

error-handling.md

index.md

jwt-signing.md

jwt.md

live-streaming.md

playback-control.md

system-operations.md

system.md

transcription-vocabularies.md

upload-utilities.md

video-assets.md

video-playback.md

video-uploads.md

video.md

web-inputs.md

webhooks.md

tile.json