Python生成阿里云直播推流地址和拉流地址
代码#
import hashlib
import random
import string
import time
def md5(param):
if param is None or len(param) == 0:
return None
md5_hash = hashlib.md5()
md5_hash.update(param.encode('utf-8'))
return md5_hash.hexdigest()
def generate_push_url(push_domain, push_key, app_name, stream_name, expire_time):
push_url = ""
if push_key == "":
push_url = f"rtmp://{push_domain}/{app_name}/{stream_name}"
else:
timestamp = int(time.time()) + expire_time
string_to_md5 = f"/{app_name}/{stream_name}-{timestamp}-0-0-{push_key}"
auth_key = md5(string_to_md5)
push_url = f"rtmp://{push_domain}/{app_name}/{stream_name}?auth_key={timestamp}-0-0-{auth_key}"
print(f"Push URL: {push_url}")
def general_pull_url(pull_domain, pull_key, app_name, stream_name, expire_time):
rtmp_url = ""
hls_url = ""
flv_url = ""
if pull_key == "":
rtmp_url = f"rtmp://{pull_domain}/{app_name}/{stream_name}"
hls_url = f"http://{pull_domain}/{app_name}/{stream_name}.m3u8"
flv_url = f"http://{pull_domain}/{app_name}/{stream_name}.flv"
else:
timestamp = int(time.time()) + expire_time
rtmp_to_md5 = f"/{app_name}/{stream_name}-{timestamp}-0-0-{pull_key}"
rtmp_auth_key = md5(rtmp_to_md5)
rtmp_url = f"rtmp://{pull_domain}/{app_name}/{stream_name}?auth_key={timestamp}-0-0-{rtmp_auth_key}"
hls_to_md5 = f"/{app_name}/{stream_name}.m3u8-{timestamp}-0-0-{pull_key}"
hls_auth_key = md5(hls_to_md5)
hls_url = f"http://{pull_domain}/{app_name}/{stream_name}.m3u8?auth_key={timestamp}-0-0-{hls_auth_key}"
flv_to_md5 = f"/{app_name}/{stream_name}.flv-{timestamp}-0-0-{pull_key}"
flv_auth_key = md5(flv_to_md5)
flv_url = f"http://{pull_domain}/{app_name}/{stream_name}.flv?auth_key={timestamp}-0-0-{flv_auth_key}"
print(f"RTMP URL: {rtmp_url}")
print(f"HLS URL: {hls_url}")
print(f"FLV URL: {flv_url}")
def main():
# Generate random app_name and stream_name (5 characters alphanumeric)
app_name = ''.join(random.choices(string.ascii_letters + string.digits, k=5))
stream_name = ''.join(random.choices(string.ascii_letters + string.digits, k=5))
expire_time = 3600 # 过期时间
pull_domain = "拉流域名"
pull_key = "拉流URL鉴权Key"
push_domain = "推流域名"
push_key = "推流URL鉴权Key"
general_pull_url(pull_domain, pull_key, app_name, stream_name, expire_time)
generate_push_url(push_domain, push_key, app_name, stream_name, expire_time)
if __name__ == '__main__':
main()
打印结果#
RTMP URL: rtmp://拉流域名/uQU2G/ZOOzm?auth_key=1719481549-0-0-b07661172c6e730a735fbb624b9e0b2f
HLS URL: http://拉流域名/uQU2G/ZOOzm.m3u8?auth_key=1719481549-0-0-56a23c4b85f9f83fc3b973e532821dac
FLV URL: http://拉流域名/uQU2G/ZOOzm.flv?auth_key=1719481549-0-0-831a487d70ef905958a5e9baa39ae40c
Push URL: rtmp://推流域名/uQU2G/ZOOzm?auth_key=1719481549-0-0-b6bf523e3ac9658d297e30aa9dd8db30
作者:piggthird
出处:https://www.cnblogs.com/piggthird/p/18271572
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了