推流地址规则与鉴权原理
腾讯云直播推流地址的标准格式为:rtmp://[推流域名]/[AppName]/[StreamName]?txSecret=[签名]&txTime=[时间]
,其中鉴权参数包含:
txTime
:16进制UNIX时间戳,表示地址过期时间txSecret
:通过MD5加密算法生成的签名串
推流域名需在腾讯云控制台完成备案,默认格式为xxx.push.tlivecloud.com
,建议使用自定义备案域名。AppName默认值为live
,StreamName用于标识唯一视频流。
Java生成鉴权参数核心逻辑
生成鉴权地址需完成以下步骤:
- 计算16进制格式的过期时间戳:
String txTime = Long.toHexString(System.currentTimeMillis/1000 + 3600).toUpperCase;
- 生成MD5签名串:
String raw = key + StreamName + txTime; MessageDigest md = MessageDigest.getInstance("MD5"); String txSecret = bytesToHex(md.digest(raw.getBytes));
- 拼接完整URL地址
完整代码实现与示例
public class TencentLiveAuthUtil { private static final String HEX_CHARS = "0123456789ABCDEF"; public static String generateUrl(String domain, String appName, String streamName, String key, int expireSeconds) throws Exception { long txTime = (System.currentTimeMillis/1000) + expireSeconds; String hexTime = Long.toHexString(txTime).toUpperCase; String rawSign = key + streamName + hexTime; String txSecret = getMD5(rawSign); return String.format("rtmp://%s/%s/%s?txSecret=%s&txTime=%s", domain, appName, streamName, txSecret, hexTime); private static String getMD5(String input) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(input.getBytes); return bytesToHex(digest); private static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder; for (byte b : bytes) { sb.append(HEX_CHARS.charAt((b & 0xF0) >> 4)); sb.append(HEX_CHARS.charAt(b & 0x0F)); return sb.toString;
使用时通过以下方式调用:
String pushUrl = TencentLiveAuthUtil.generateUrl( live.example.com", "live", "test123", your_secret_key", 7200);
注意事项
- 需在腾讯云控制台开启推流鉴权功能
- 建议定期更换推流地址(有效期通常设为2-6小时)
- 测试环境可使用控制台的地址生成器验证签名算法
通过Java实现腾讯云推流地址生成,需严格遵循鉴权参数的生成规则。核心在于正确计算16进制时间戳和MD5签名,开发者应关注密钥管理、时间同步等安全实践。
本文由阿里云优惠网发布。发布者:编辑员。禁止采集与转载行为,违者必究。出处:https://aliyunyh.com/536808.html
其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。