// Incoming stream has created or updated (there is no separate event for creation here)
interface IIncomingStreamUpdated {
action: 'updateIncoming';
userId: number;
eventId: string | null;
// When stream started, Unix timestamp in seconds
createdAt: number;
// Streaming session identifier
suid: string;
// Streaming parameters
streaming: {
fps: number;
keyframeInterval: number;
lossRate: number;
// Bits per second
bitrate: {
total: number,
audio: number,
video: number,
};
codec: {
audio: string,
video: string,
},
profileAndLevel: string;
height: number;
width: number;
};
}
// Incoming stream has finished
interface IIncomingStreamDeleted {
action: 'deleteIncoming';
userId: number;
eventId: string | null;
// When stream started, Unix timestamp in seconds
createdAt: number;
// Streaming session identifier
suid: string;
}
// Outgoing stream to end platform has created or updated
// (there is no separate event for creation here)
interface IOutgoingStreamUpdated {
action: 'updateOutgoing';
userId: number;
eventId: string | null;
// Streaming platform ID on Restream
platformId: number;
channelId: number;
// When outgoing stream started, Unix timestamp in seconds
createdAt: number;
// Channel details
channelIdentifier: string;
eventIdentifier: string;
// Streaming parameters
streaming: {
// Status from the point of view of Restream
status: 'CONNECTING' | 'CONNECTED' | 'DISCONNECTED',
// Bits per second
bitrate: number,
bufferedBytes: number,
};
}
// Outgoing stream has finished
interface IOutgoingStreamDeleted {
action: 'deleteOutgoing';
userId: number;
eventId: string | null;
// Streaming platform ID on Restream
platformId: number;
channelId: number;
// When outgoing stream started, Unix timestamp in seconds
createdAt: number;
}
// Stream information from the point of view of end platform
interface IStatusesUpdated {
action: 'updateStatuses';
userId: number;
eventId: string | null;
// Streaming platform ID on Restream
platformId: number;
channelId: number;
// When outgoing stream started, Unix timestamp in seconds
createdAt: number;
// When the information was collected
// (this can be a bit outdated cached information for long streaming sessions)
updatedAt: number;
// Channel details
channelIdentifier: string;
eventIdentifier: string;
// Information from end platform
channelViews: number | null;
followers: number | null;
gameTitle: string | null;
online: boolean;
streamViews: number | null;
title: string | null;
viewers: number | null;
}
export type IUpdates =
IIncomingStreamUpdated |
IIncomingStreamDeleted |
IOutgoingStreamUpdated |
IOutgoingStreamDeleted |
IStatusesUpdated;