Aperçu
Ce didacticiel explique, au niveau de l'API, comment créer une tâche de diffusion en direct dans Brightcove Live qui acceptera les entrées MPEG2-TS. La clé pour utiliser l'entrée MPEG2-TS est de sélectionner un protocol
qui prend en charge MPEG2-TS et que votre encodeur peut fournir. Les protocoles compatibles TS pris en charge par l'API Live sont :
rtp
rtp-fec
srt
L'un de ces protocoles doit être spécifié explicitement pour utiliser l'entrée TS, car le protocole d'entrée par défaut est rtmp
.
Pour utiliser les codes temporels SMPTE pour l'écrêtage, les points de repère SSAI ou les balises ID3, ils doivent être insérés dans la vidéo H.264 (AVC) dans les messages SEI Picture Timing.
N'oubliez pas que ces protocoles utilisent UDP (User Datagram Protocol) plutôt que TCP pour la communication entre l'encodeur et Live, donc votre pare-feu/routeur doit être configuré correctement et autoriser les sorties UDP vers Internet à partir de l'IP de l'encodeur.
Si vous utilisez rtp-fec
, les informations FEC sont envoyées sur un port différent de celui du support. Ainsi, par exemple, si vous utilisez le port 2000, vous devrez également ouvrir les ports 2002 et 2004 (si vous utilisez le FEC 2D).
Ce tutoriel utilisera curl pour faire les requêtes API, mais vous pouvez facilement les faire dans Insomnia , Postman ou d'autres clients REST à la place.
Créer un emploi en direct
Tout d'abord, nous allons créer un emploi réel. Vous aurez besoin d'un API-KEY
pour l'API en direct. Si ce n'est pas le cas et que vous souhaitez obtenir un accès, veuillez contacter votre Customer Success Manager.
-
Copiez et collez la curl commande suivante dans un éditeur de texte :
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 }] }'
-
Effectuez les remplacements suivants :
avec votre clé API live Brightcove. Par exemple :
abcdfeg-this-is-a-fake-api-key-FgJajjasd12hJHsZ
avec la région disponible la plus proche de votre encodeur, voir régions disponibles les plus proches à votre encodeur. Par exemple :
us-west-2
avec le protocole d'entrée que votre encodeur fournira :
rpt
,rtp-fec
, ousrt
avec la plage IP que votre encodeur utilisera, sous la forme de
1.2.3.4/32
(le cas échéant) avec la plage d'adresses IP que votre encodeur de sauvegarde utilisera, sous la forme de
1.2.3.4/32
- Après avoir apporté ces modifications, copiez et collez le code dans Terminal ou dans l'application de ligne de commande que vous utilisez et exécutez-le.
-
La réponse devrait être quelque chose comme ceci si vous utilisez le
rtp-fec
protocole :{ "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" }
Ou comme ça pour
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" }
Ce travail créera 5 rendus basé au Recommandations Apple.
Configurez votre encodeur (TS+FEC)
Les étapes indiquées ici supposeront une Live box élémentaire encodeur, qui a été utilisé pour tester les étapes de ce didacticiel. Si vous avez un autre encodeur, les paramètres doivent être similaires.
Les paramètres les plus importants pour cette rtp-fec
entrée sont les suivants :
- Configurer la source du timecode en tant qu'"horloge système"
- Définissez « Correction d'erreur directe » sur « Colonne et ligne » et définissez les valeurs « Profondeur de colonne » et « Longueur de ligne » :
- Profondeur de la colonne : 4 (1 paquet FEC supplémentaire sera ajouté à chaque paquet TS "Column Depth")
- Longueur de ligne : 10 (1 paquet FEC supplémentaire sera ajouté tous les paquets TS "Longueur de ligne")
- Des données supplémentaires ajoutées peuvent être calculées : TotalBitrate = MediaBitrate * (1/(ColumnDepth + 1) + 1/(RowLength + 1)
- Vérifiez "l'insertion du code temporel" dans la vidéo
- Fortement recommandé : Framerate = suivre la source
Voici la configuration que nous avons utilisée pour cet exemple TS+FEC :
Configurez votre encodeur (SRT)
La configuration présentée ici est basée sur un Haivision KB encodeur, qui a été utilisé pour tester les étapes de ce didacticiel. Si vous avez un autre encodeur, les paramètres doivent être similaires.
Voici la configuration que nous avons utilisée pour cet exemple SRT :
Tester la lecture
Vous pouvez utiliser ceci Page de démonstration VideoJS HLS pour tester la lecture, collez simplement la valeur playback_url
renvoyé dans la réponse de la tâche de création :