media server logo
Dokumentationsnavigation ein- oder ausblenden
Callaba-Startseite

Restreams

Verwenden Sie Restreams, um eine Live-Eingabe gleichzeitig an Streaming-Plattformen und private Endpunkte auszuliefern. Nutzen Sie Remuxing, wenn die Formate übereinstimmen. Andernfalls können Sie transcodieren, die Auflösung ändern, Audio anpassen und Overlays hinzufügen.

FunktionLive-Quelle an ein anderes Ziel ausliefern

Geeignet, wennEine Live-Quelle soll eine weitere Plattform oder ein anderes Protokoll erreichen – optional mit Transcodierung, Skalierung, Audioanpassung oder Overlays.

Anderes Modul verwenden, wennVerwenden Sie SRT-Routen für unveränderte SRT- oder UDP-Weiterleitung und Webplayer für die Browser-Wiedergabe.

1Live-Eingang wählen2Ausgabeziel festlegen3Starten und überwachen
POST /api/restream/create
9 Endpunkte

Voraussetzungen

Alle Methoden erfordern einen gültigen x-access-token. Erstellen Sie zuerst das referenzierte Eingabemodul und stellen Sie sicher, dass das Ausgabeziel das gewählte Protokoll, den Codec, die Auflösung, die Bitrate und die Zugangsdaten akzeptiert.

Funktionen

  • create und update konfigurieren die Eingabe-, Ausgabe-, Transcodierungs-, Medienmodifikations- und Overlay-Einstellungen.
  • getAll, getCount und getById inspizieren Jobs.
  • start und stop steuern die Live-Pipeline.
  • getStat meldet verfügbare Bitrate, Kadenz und Prozessstatus.
  • remove löscht einen Job.

Beispiel-Workflow

  1. Wählen Sie eine verwaltete Eingabe oder eine unterstützte URL-Quelle aus.
  2. Legen Sie ein RTMP, SRT, RIST oder ein anderes unterstütztes Ziel fest.
  3. Aktivieren Sie Transcoding- oder Medienänderungen nur dann, wenn die Ausgabe sie erfordert.
  4. Starten Sie den Job und prüfen Sie mit getStat, ob Medien übertragen werden.
  5. Stoppen Sie den Job, bevor Sie Zugangsdaten oder Zieleinstellungen ändern.

Typische Anwendungsfälle

  • Senden Sie einen SRT-Contribution-Stream an ein RTMP-Verteilungsziel.
  • Empfangen oder liefern Sie einen RIST-Feed innerhalb eines Live-Distribution-Workflows.
  • Transcodieren Sie das Signal, ändern Sie die Größe, passen Sie Audio an oder fügen Sie vor der Auslieferung ein Overlay hinzu.
  • Halten Sie die Eingabe stabil, während Sie die nachgelagerten Ziele zwischen den Ereignissen ändern.

Einschränkungen und Fehlerbehebung

Ein gespeicherter Restream kann immer noch einen Offline-Eingang oder ein Ziel haben, das die Verbindung ablehnt, also überprüfen Sie den Live-Status nach dem Start. Transcoding erfordert wesentlich mehr CPU- oder GPU-Kapazität als Remuxing. Verwenden Sie für die RIST-Lieferung eine kompatible RIST-URL und ein MPEG-TS-Signal und überprüfen Sie dann die ausgewählten RIST-Profil- und Sicherheitseinstellungen an beiden Enden.

Nächste Schritte

Prüfen Sie das Ziel, ergänzen Sie anschließend Monitoring oder stellen Sie den Stream bei Bedarf über Webplayer im Browser bereit.

REST-Lösungsrezept

Einen Live-Eingang an mehrere Ziele senden

Erstellen Sie pro Ziel einen Restream-Job aus demselben geprüften Eingang, starten Sie die Jobs und überwachen Sie jeden Ausgang separat.

  1. Ziel-Jobs erstellenVerwenden Sie denselben Eingang und geben Sie Protokoll, Zugangsdaten und URL jedes Ziels an.POST /api/restream/create
  2. Ausgabe startenStarten Sie jeden gespeicherten Job, nachdem seine Upstream-Quelle fehlerfrei arbeitet.POST /api/restream/start
  3. Jeden Ausgang überwachenVergleichen Sie Bitrate und Prozessstatus pro Ziel statt den Fan-out als einen Status zu behandeln.POST /api/restream/getStat

Eine erfolgreiche Create-Antwort bestätigt die Konfiguration, nicht den Medienzustand. Starten Sie die Ressource und prüfen Sie ihre Laufzeitstatistik, bevor Sie Produktionsverkehr senden.

REST-Lösungsrezept

Einen Live-Stream für sein Ziel transkodieren

Erstellen Sie einen Restream mit benötigtem Codec, Bitrate, Auflösung oder Audiokonvertierung und prüfen Sie anschließend den Worker in der Laufzeitstatistik.

  1. Transcode definierenWählen Sie Ein- und Ausgangs-Presets und setzen Sie nur benötigte Transcoding- und Medienfelder.POST /api/restream/create
  2. Verarbeitung startenStarten Sie nach Prüfung von Ziel-Codecs, Auflösung, Bitrate und Zugangsdaten.POST /api/restream/start
  3. Worker-Zustand prüfenBeobachten Sie Bitrate, Bildrate und Prozessstatus auf Stillstand oder fehlende Kapazität.POST /api/restream/getStat

Aktivieren Sie nur die vom Ziel benötigte Verarbeitung. Transcoding benötigt deutlich mehr CPU oder GPU als Remuxing.

REST-Lösungsrezept

Kontinuierliches Datei-Playout zu einem Live-Ziel betreiben

Registrieren oder laden Sie das Medienobjekt hoch, verwenden Sie es als endlosen Datei-Eingang eines Restream-Jobs und überwachen Sie die dauerhafte Ausgabe.

  1. Mediendatei vorbereitenLaden Sie die Quelle hoch und behalten Sie die zurückgegebene Datei-ID für den Playout-Eingang.POST /api/files/uploadFile
  2. Looping-Playout erstellenVerwenden Sie den endlosen Datei-Eingang und konfigurieren Sie Live-Ziel sowie nötige Verarbeitung.POST /api/restream/create
  3. Kanal überwachenPrüfen Sie Prozess und Ziel-Bitrate als Teil der dauerhaften Zustandskontrolle.POST /api/restream/getStat

Der geprüfte Loop-Eingabetyp ist INPUT_TYPE_FILE_VIDEO_INFINITY; input_module_id muss eine vorhandene verwaltete Datei bezeichnen.

POST
/api/restream/create
API-Token erforderlich

Erstellen Sie eine verwaltete Medienpipeline mit Quelle, Ziel, optionaler Transcodierung, Audio- oder Videoanpassungen, Overlays und anfänglichem Aktivstatus. Senden Sie das API-Token im x-access-token-Header.

Für RIST-URLs verwenden Sie INPUT_TYPE_RIST_URL für input.input_type oder OUTPUT_TYPE_RIST_URL für output.output_type. Ein RIST-Ausgang sendet MPEG-TS an output_stream_url.

Anfragebeispiele

Wählen Sie die Betriebsvoreinstellung aus, die mit Quelle und Ziel übereinstimmt, und fügen Sie dann nur die Verarbeitungsfelder hinzu, die von dieser Pipeline benötigt werden.

Typische Anwendungsfälle

  • Veröffentlichen Sie einen Contribution-Feed auf einer Social-Media-Plattform oder über ein CDN.
  • Verbinden Sie SRT, RTMP, RIST, HLS oder einen anderen unterstützten Transport.
  • Transcodieren, überlagern oder verteilen Sie eine Quelle auf mehrere zielspezifische Ausgänge.
Live-Weiterverteilung

Verwenden Sie diese Voreinstellung, wenn ein eingehender SRT-Contribution-Stream an ein RTMP-Ziel wie eine soziale Plattform oder ein anderes verwaltetes RTMP-Ziel weitergeleitet werden soll.

SRT-URL zum RTMP-Ausgang

Dies ist der häufigste Restream-Workflow: SRT empfangen, Transcodierung deaktiviert oder minimal halten und das Ergebnis an eine RTMP-Ausgabe senden.

SRT-URL zum RTMP-Ausgang
Code kopieren
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT to RTMP social output",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Transportbrücke

Verwenden Sie diese Voreinstellung, wenn der Job eine SRT-Quelle mit einem anderen SRT-Ziel verbinden soll, während die Pipeline als verwaltetes Prozessobjekt erhalten bleibt.

SRT-URL zur SRT-Ausgabe

Dies ist nützlich, wenn Ingest und Ausgabe getrennt bleiben sollen, aber innerhalb eines aktiven Restream-Jobs verwaltet werden.

SRT-URL zur SRT-Ausgabe
Code kopieren
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT bridge to another SRT destination",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1936",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT bridge to another SRT destination",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "srt://127.0.0.1:2035",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT bridge to another SRT destination",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Wiedergabeprüfung

Verwenden Sie diese Voreinstellung, wenn Sie HLS als Eingabe verwenden und die Medienpipeline für Monitoring, Tests oder Messungen ausführen möchten, ohne Medien an ein externes Ziel zu senden.

HLS-Eingang zur Null-Ausgabe

Verwenden Sie diese Konfiguration für kontrollierte Wiedergabeprüfungen und Prüf-Workflows, die aus einem Restream-Job erstellt wurden.

HLS-Eingang zur Null-Ausgabe
Code kopieren
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "HLS playback probe",
"input": {
"input_type": "INPUT_TYPE_HLS_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "https://example.com/live/index.m3u8",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "HLS playback probe",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_DEV_NULL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "HLS playback probe",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Parameter im Request-Body
Identität
restream_name
string
Direktlink kopieren

Lesbarer Jobname. Das Dashboard validiert dies als erforderliches Feld.

Pipeline
input
object
Direktlink kopieren

Die Eingabedefinition wird durch das Dashboard InputSource erstellt. Dieses Objekt bestimmt den Quelltransport oder die Modulverbindung. URL-basierte RIST-Eingabe verwendet INPUT_TYPE_RIST_URL mit input_stream_url.

output
object
Direktlink kopieren

Ausgabedefinition, die durch das Dashboard OutputSource gesteuert wird. Dieses Objekt bestimmt, wohin die Pipeline das Ergebnis sendet oder es bereitstellt. URL-basierte RIST-Ausgabe verwendet OUTPUT_TYPE_RIST_URL mit output_stream_url; die Engine sendet MPEG-TS auf diesem Pfad aus.

Verarbeitung
transcoding
object
Direktlink kopieren

Optionales Transcodierungsprofil für die FFmpeg-Pipeline. Das Dashboard übermittelt diesen Block immer, auch wenn die Transcodierung deaktiviert ist.

modify_audio
object
Direktlink kopieren

Optionale Einstellungen zur Audiobearbeitung: Das Dashboard sendet ein Objekt mit deaktiviertem Zustand, wenn keine Audioänderung angefordert wird.

modify_video
object
Direktlink kopieren

Optionale Videoänderungseinstellungen, die für Passthrough-Jobs in einem deaktivierten Zustand bleiben können.

overlay
object
Direktlink kopieren

Optionale Overlay-Einstellungen: Der Erstellungsablauf kann weiterhin ein explizit deaktiviertes Overlay-Objekt senden.

Laufzeit
active
boolean
Direktlink kopieren

Kontrolliert, ob der Job nach der Bereitstellung aktiv sein soll.

Restream erstellen
Code kopieren
curl --request POST \
--url http://localhost/api/restream/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"restream_name": "SRT to RTMP social output",
"input": {
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_stream_listen_port": {},
"input_settings": {},
"input_module_id": "",
"input_stream_id": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"transcoding": {
"video_transcoding": "Disabled",
"output_video_bitrate": 6000,
"preset": "ultrafast",
"tune": "Disabled",
"crf": "Disabled",
"pix_fmt": "Disabled",
"encoding_rate": "",
"filter_fps": "",
"gop": "Disabled",
"force_key_frames": 2,
"frame_width": "",
"frame_height": "",
"slices": "",
"cores": "",
"xlnx_hwdev": "0",
"audio_transcoding": "Disabled",
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"output": {
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_stream_listen_port": {},
"output_settings": {},
"output_stream_key": "",
"entity_name": "SRT to RTMP social output",
"module_name": "MODULE_RESTREAM"
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true
}'
Antwort
Identität
_id
string
Direktlink kopieren

Ressourcen-ID, die beim Erstellen oder Auflisten des Restream-Jobs zurückgegeben wird.

id
string
Direktlink kopieren

Kurzform für _id.

restream_name
string
Direktlink kopieren

Name, der für den Restream-Job gespeichert ist.

Pipeline
input[]
array
Direktlink kopieren

Vollständig aufgelöstes Eingabeobjekt oder aufgelöste Eingabeobjekte für die Pipeline.

output[]
array
Direktlink kopieren

Vollständig aufgelöstes Ausgabeobjekt oder aufgelöste Ausgabeobjekte für die Pipeline.

Verarbeitung
transcoding / modify_audio / modify_video / overlay
object
Direktlink kopieren

Verarbeitungseinstellungen, die auf dem Jobobjekt gespeichert sind.

Laufzeit
active
boolean
Direktlink kopieren

Aktueller Aktivstatus des Restream-Jobs.

created / modified
string
Direktlink kopieren

Zeitstempel, die vom Backend verwaltet werden.

Betriebsergebnis
success
boolean
Direktlink kopieren

Bei erfolgreicher Ausführung enthält die Antwort success: true.

Antwort: Restream erstellen
JSON
Code kopieren
{
"_id": "65ff4d2997300f9385d32a90",
"id": "65ff4d2997300f9385d32a90",
"restream_name": "SRT to RTMP social output",
"input": [
{
"_id": "65ff4d2997300f9385d32a91",
"id": "65ff4d2997300f9385d32a91",
"input_type": "INPUT_TYPE_SRT_URL",
"application": "IO_APPLICATION_FFMPEG",
"input_stream_url": "srt://127.0.0.1:1935",
"input_settings": {},
"module_name": "MODULE_RESTREAM"
}
],
"output": [
{
"_id": "65ff4d2997300f9385d32a92",
"id": "65ff4d2997300f9385d32a92",
"output_type": "OUTPUT_TYPE_OTHER_RTMP_URL",
"application": "IO_APPLICATION_FFMPEG",
"output_stream_url": "rtmp://a.rtmp.youtube.com/live2/example-stream-key",
"output_settings": {},
"module_name": "MODULE_RESTREAM"
}
],
"transcoding": {
"video_transcoding": "Disabled",
"audio_transcoding": "Disabled",
"output_video_bitrate": 6000,
"output_audio_bitrate": 128,
"sample_rate": 44100
},
"modify_audio": {
"type": "DISABLED",
"channel": "1,2",
"track": "0"
},
"modify_video": {
"type": "DISABLED"
},
"overlay": {
"type": "DISABLED",
"position": {
"x": 1,
"y": 1
}
},
"active": true,
"module_name": "MODULE_RESTREAM",
"created": "2026-03-24T11:30:12.000Z",
"modified": "2026-03-24T11:30:12.000Z",
"success": true
}
POST
/api/restream/getCount
API-Token erforderlich
POST
/api/restream/getAll
API-Token erforderlich
POST
/api/restream/getById
API-Token erforderlich
POST
/api/restream/update
API-Token erforderlich
POST
/api/restream/start
API-Token erforderlich
POST
/api/restream/stop
API-Token erforderlich
DELETE
/api/restream/remove
API-Token erforderlich
POST
/api/restream/getStat
API-Token erforderlich