package com.qiniu.pili;
public final class Client {
private RPC cli;
public Client(String accessKey, String secretKey) {
this.cli = new RPC(new Mac(accessKey, secretKey));
}
/*
RTMPPublishURL generates RTMP publish URL
expireAfterSeconds means URL will be invalid after expireAfterSeconds.
*/
public String RTMPPublishURL(String domain, String hub, String streamKey, int expireAfterSeconds) {
long expire = System.currentTimeMillis() / 1000 + expireAfterSeconds;
String path = String.format("/%s/%s?e=%d", hub, streamKey, expire);
String token;
try {
token = this.cli.getMac().sign(path);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return String.format("rtmp://%s%s&token=%s", domain, path, token);
}
/*
RTMPPlayURL generates RTMP play URL
*/
public String RTMPPlayURL(String domain, String hub, String streamKey) {
return String.format("rtmp://%s/%s/%s", domain, hub, streamKey);
}
/*
HLSPlayURL generates HLS play URL
*/
public String HLSPlayURL(String domain, String hub, String streamKey) {
return String.format("http://%s/%s/%s.m3u8", domain, hub, streamKey);
}
/*
HDLPlayURL generates HDL play URL
*/
public String HDLPlayURL(String domain, String hub, String streamKey) {
return String.format("http://%s/%s/%s.flv", domain, hub, streamKey);
}
/*
SnapshotPlayURL generates snapshot URL
*/
public String SnapshotPlayURL(String domain, String hub, String streamKey) {
return String.format("http://%s/%s/%s.jpg", domain, hub, streamKey);
}
public Hub newHub(String hub) {
return new Hub(this.cli, hub);
}
public Meeting newMeeting() {
return new Meeting(this.cli);
}
}