Überblick
In diesem Tutorial wird auf API-Ebene erklärt, wie man einen Live-Streaming-Job in Brightcove Live erstellt, der MPEG2-TS-Eingaben akzeptiert. Der Schlüssel zur Verwendung des MPEG2-TS-Eingangs besteht darin, a protocol
die MPEG2-TS unterstützt und die Ihr Encoder liefern kann. Die von der Live-API unterstützten TS-fähigen Protokolle sind:
rtp
rtp-fec
srt
Eines dieser Protokolle muss explizit angegeben werden, um die TS-Eingabe zu verwenden, da das Standardeingabeprotokoll ist rtmp
.
Um SMPTE-Timecodes für Clipping, SSAI-Cue-Points oder ID3-Tags zu verwenden, sollten diese in das H.264 (AVC)-Video in SEI Picture Timing-Meldungen eingefügt werden.
Denken Sie daran, dass diese Protokolle UDP (User Datagram Protocol) anstelle von TCP für die Kommunikation zwischen dem Encoder und Live verwenden, daher muss Ihre Firewall / Ihr Router richtig konfiguriert sein und UDP-Ausgaben ins Internet von der IP des Encoders zulassen.
Wenn Sie FEC-Informationen verwenden rtp-fec
, werden die FEC-Informationen an einen anderen Port als das Medium gesendet. Wenn Sie also beispielsweise Port 2000 verwenden, müssen Sie auch die Ports 2002 und 2004 öffnen (wenn Sie 2D-FEC verwenden).
Dieses Tutorial wird verwendet, curl um die API-Anforderungen zu stellen, aber Sie können sie einfach in Insomnia Postman oder stattdessen in anderen REST-Clients stellen.
Erstellen Sie einen Live-Job
Zuerst erstellen wir einen Live-Job. Sie benötigen eine API-KEY
für die Live-API. Wenn Sie dies nicht tun und an einem Zugang interessiert sind, wenden Sie sich bitte an Ihren Customer Success Manager.
-
Kopieren Sie Folgendes und fügen Sie es ein curl Befehl in einen Texteditor:
curl -X POST \ https://api.bcovlive.io/v1/jobs \ -H 'Content-Type: application/json' \ -H 'x-api-key: ' \ -d '{ "live_stream": true, "region": "", "protocol": "", "cidr_whitelist": ["", ""], "outputs": [{ "label": "hls360p", "live_stream": true, "height": 360, "video_bitrate": 365, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls432p", "live_stream": true, "height": 432, "video_bitrate": 730, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls540p", "live_stream": true, "height": 540, "video_bitrate": 2000, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls720p3M", "live_stream": true, "height": 540, "video_bitrate": 2000, "segment_seconds": 6, "keyframe_interval": 60 }, { "label": "hls720p4.5M", "live_stream": true, "height": 720, "video_bitrate": 4500, "segment_seconds": 6, "keyframe_interval": 60 }] }'
-
Nehmen Sie die folgenden Ersetzungen vor:
mit Ihrem Brightcove Live-API-Schlüssel. Zum Beispiel:
abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
mit der Ihrem Encoder am nächsten gelegenen verfügbaren Region, sehen Sie sich die nächstgelegenen verfügbaren Regionen zu Ihrem Encoder an. Zum Beispiel:
us-west-2
mit dem Eingabeprotokoll liefert Ihr Encoder:
rpt
,rtp-fec
odersrt
mit dem IP-Bereich, den Ihr Encoder verwenden wird, in Form von
1.2.3.4/32
(falls vorhanden) mit dem IP-Bereich, den Ihr Backup-Encoder verwenden wird, in Form von
1.2.3.4/32
- Nachdem Sie diese Änderungen vorgenommen haben, kopieren Sie den Code und fügen Sie ihn in das Terminal oder eine beliebige Befehlszeilen-App ein, die Sie verwenden, und führen Sie ihn aus.
-
Die Antwort sollte in etwa so aussehen, wenn Sie das verwenden
rtp-fec
Protokoll:{ "id": "42c913e5373844a99a6285367f2704ec", "outputs": [... removed for simplicity ...], "stream_url": "rtp://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:12675", "stream_name": "42c913e5373844a99a6285367f2704ec.stream", "static": false, "encryption": {}, "playback_url": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist.m3u8", "playback_url_dvr": "https://bcovlive-a.akamaihd.net/42c913e5373844a99a6285367f2704ec/us-west-2/NA/playlist_dvr.m3u8" }
Oder so für
srt
:{ "id": "cdb820f2d7764b91a79536dac799fb77", "outputs": [... removed for simplicity ...], "stream_url": "srt://ec2-34-212-0-224.us-west-2.compute.amazonaws.com:13820", "stream_name": "cdb820f2d7764b91a79536dac799fb77.stream", "static": false, "encryption": {}, "playback_url": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist.m3u8", "playback_url_dvr": "https://bcovlive-a.akamaihd.net/cdb820f2d7764b91a79536dac799fb77/us-west-2/NA/playlist_dvr.m3u8" }
Mit diesen Jobs werden 5 Wiedergabeversionen erstellt basierend An Apple-Empfehlungen.
Konfigurieren Sie Ihren Encoder (TS+FEC)
Die hier gezeigten Schritte gehen davon aus, dass ein Elementare Live-Box Encoder, der beim Testen der Schritte für dieses Tutorial verwendet wurde. Wenn Sie einen anderen Encoder haben, sollten die Einstellungen ähnlich sein.
Die wichtigsten Einstellungen dafür rtp-fec
Eingabe sind:
- Konfigurieren Sie die Timecode-Quelle als "Systemuhr"
- Setzen Sie "Fehlerkorrektur weiterleiten" auf "Spalte und Zeile" und setzen Sie die Werte für "Spaltentiefe" und "Zeilenlänge":
- Säulentiefe: 4 (1 zusätzliches FEC-Paket wird jedem "Column Depth" TS-Paket hinzugefügt)
- Zeilenlänge: 10 (1 zusätzliches FEC-Paket wird zu jedem TS-Paket mit "Reihenlänge" hinzugefügt)
- Zusätzliche hinzugefügte Daten können berechnet werden: TotalBitrate = MediaBitrate * (1/(Spaltentiefe + 1) + 1/(Zeilenlänge + 1)
- Überprüfen Sie "Timecode-Einfügung" im Video
- Wärmstens empfohlen: Bildrate = Quelle folgen
Dies ist die Konfiguration, die wir für dieses TS+FEC-Beispiel verwendet haben:
Konfigurieren Sie Ihren Encoder (SRT)
Das hier gezeigte Setup basiert auf a Haivision KB Encoder, der beim Testen der Schritte für dieses Tutorial verwendet wurde. Wenn Sie einen anderen Encoder haben, sollten die Einstellungen ähnlich sein.
Dies ist die Konfiguration, die wir für dieses SRT-Beispiel verwendet haben:
Wiedergabe testen
Das kannst du benutzen VideoJS HLS-Demoseite Um die Wiedergabe zu testen, fügen Sie einfach den Wert ein playback_url
in der Antwort des Erstellungsjobs zurückgegeben: