Вход с типом RTMP_PUSH поставляется с двумя адресатами, каждому с предварительно назначенным IP-адресом и портом. Но для удобства использования мне нужно предоставить URL с моим доменным именем, а не IPv4-адрес входной конечной точки MediaLive. Еще одна важная вещь заключается в том, что я создаю входные данные программно и должен сделать их доступными как можно скорее. Предоставляет ли AWS MediaLive способ добиться этого?
Моей самой первой мыслью было создание какой-либо конечной точки на веб-сервере, которая принимает все необходимые параметры и возвращает перенаправление 302 на соответствующую конечную точку для запросов RTMP, но я все еще не уверен, возможно ли это и является ли это хорошим способом решить проблему.
Теперь создание канала выглядит следующим образом:
import boto3
ML_REGION = 'eu-central-1'
client = boto3.client('medialive', region_name=ML_REGION)
def create_input(cls, name, destinations_names, sec_groups, in_type='RTMP_PUSH'):
return client.create_input(
Destinations=destinations_names,
InputSecurityGroups=[
sec_groups,
],
Name=name,
Type=in_type
)
Что возвращает:
{
"ResponseMetadata": {
"HTTPHeaders": {...},
"RequestId": "26b556d2-df7b-11e8-b224-a3bcca6f3675",
"HTTPStatusCode": 201,
"RetryAttempts": 0
},
"Input": {
"State": "DETACHED",
"SecurityGroups": [
"3833595"
],
"Id": "6345906",
"Sources": [],
"Type": "RTMP_PUSH",
"Arn": "arn:aws:medialive:eu-central-1:928636723143:input:6250974",
"AttachedChannels": [],
"Name": "prog",
"Destinations": [
{
"Ip": "52.29.243.126",
"Url": "rtmp://52.29.243.126:1935/a",
"Port": "1935"
},
{
"Ip": "18.184.153.122",
"Url": "rtmp://18.184.153.122:1935/b",
"Port": "1935"
}
]
}
}
С помощью этого ответа я могу хранить, скажем, пары {stream_name: url} и определять соответствующий URL перенаправления для запросов к моей пользовательской конечной точке, но это не выглядит хорошим решением. Более того, даже не уверен, возможно ли это с RTMP.