Skip to content

Commit

Permalink
优化边转边播示例
Browse files Browse the repository at this point in the history
  • Loading branch information
wanjiewu committed Jun 22, 2024
1 parent a2547fc commit c5f0e59
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 18 deletions.
11 changes: 9 additions & 2 deletions example/CI/media_process/generate_token.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,8 @@ func GenerateToken(appId string, bucketId string, objectKey string, secret []byt

// 验证环境url
func GetCIDomainURL(tak string, tsk string, token *URLToken, appId string, bucketId string, region string, objectKey string, playkey []byte) {
// 固定为getplaylist
name := "getplaylist"
// 固定为pm3u8
name := "pm3u8"

u, _ := url.Parse("https://" + bucketId + ".ci." + region + ".myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
Expand Down Expand Up @@ -128,6 +128,13 @@ func GetCOSDomainURL(tak string, tsk string, token *URLToken, appId string, buck
fmt.Println(resultUrl)
}

// CDN域名
func GetCDNDomainVideoEncryptionURL(cdn string, objectKey string, jwtToken string) string {
url := cdn + "/" + objectKey
resultUrl := url + "?ci-process=pm3u8&signType=no&expires=43200&&tokenType=JwtToken&token=" + jwtToken
return resultUrl
}

func main() {
// 替换成您的密钥
tak := os.Getenv("COS_SECRETID")
Expand Down
63 changes: 47 additions & 16 deletions example/CI/media_process/livetranscode.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ func GenerateToken(appId string, bucketId string, objectKey string, secret []byt
}

// CI验证环境
func GetCIDomainURL(tak string, tsk string, token *URLToken, appId string, bucketId string, region string, objectKey string, playkey []byte) string {
func GetCIDomainVideoEncryptionURL(tak string, tsk string, token *URLToken, bucketId string, region string, objectKey string, jwtToken string) string {
// 固定为getplaylist
name := "getplaylist"

Expand All @@ -98,14 +98,12 @@ func GetCIDomainURL(tak string, tsk string, token *URLToken, appId string, bucke
fmt.Printf("Error: %v\n", err)
return ""
}
// 生成token
generateToken, _ := GenerateToken(appId, bucketId, objectKey, playkey)
resultUrl := presignedURL.String() + "&tokenType=JwtToken&expires=3600&object=" + url.QueryEscape(objectKey) + "&token=" + generateToken
resultUrl := presignedURL.String() + "&tokenType=JwtToken&expires=3600&object=" + url.QueryEscape(objectKey) + "&token=" + jwtToken
return resultUrl
}

// COS环境
func GetCOSDomainURL(tak string, tsk string, token *URLToken, appId string, bucketId string, region string, objectKey string, playkey []byte) string {
func GetCOSDomainVideoEncryptionURL(tak string, tsk string, token *URLToken, bucketId string, region string, objectKey string, jwtToken string) string {
u, _ := url.Parse("https://" + bucketId + ".cos." + region + ".myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Expand All @@ -123,19 +121,45 @@ func GetCOSDomainURL(tak string, tsk string, token *URLToken, appId string, buck
fmt.Printf("Error: %v\n", err)
return ""
}
// 生成token
generateToken, _ := GenerateToken(appId, bucketId, objectKey, playkey)
resultUrl := presignedURL.String() + "&ci-process=getplaylist&expires=43200&&tokenType=JwtToken&token=" + generateToken

resultUrl := presignedURL.String() + "&ci-process=getplaylist&expires=43200&&tokenType=JwtToken&token=" + jwtToken
return resultUrl
}

// COS环境
func GetCOSDomainURL(tak string, tsk string, token *URLToken, appId string, bucketId string, region string, objectKey string) string {
u, _ := url.Parse("https://" + bucketId + ".cos." + region + ".myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
c := cos.NewClient(b, &http.Client{
Transport: &cos.AuthorizationTransport{
SecretID: tak,
SecretKey: tsk,
SessionToken: token.SessionToken,
},
})
ctx := context.Background()

// 获取预签名
presignedURL, err := c.Object.GetPresignedURL3(ctx, http.MethodGet, objectKey, time.Hour, token)
if err != nil {
fmt.Printf("Error: %v\n", err)
return ""
}
resultUrl := presignedURL.String() + "&ci-process=getplaylist&signType=cos&expires=43200"
return resultUrl
}

// CDN域名
func GetCDNDomainURL(tak string, tsk string, token *URLToken, appId string, bucketId string, region string, objectKey string, playkey []byte) string {
func GetCDNDomainVideoEncryptionURL(cdn string, objectKey string, jwtToken string) string {
url := cdn + "/" + objectKey
resultUrl := url + "?ci-process=getplaylist&signType=no&expires=43200&&tokenType=JwtToken&token=" + jwtToken
return resultUrl
}

url := "http://abc.cdn.com/" + objectKey
// 生成token
generateToken, _ := GenerateToken(appId, bucketId, objectKey, playkey)
resultUrl := url + "?ci-process=getplaylist&expires=43200&&tokenType=JwtToken&token=" + generateToken
// CDN域名
func GetCDNDomainURL(cdn string, objectKey string) string {
url := cdn + "/" + objectKey
resultUrl := url + "?ci-process=getplaylist&signType=no"
return resultUrl
}

Expand Down Expand Up @@ -240,8 +264,15 @@ func main() {
region := "ap-chongqing"
// 替换成您需要播放的视频名称
objectKey := "live/a.m3u8"

GetCOSDomainURL(tak, tsk, token, appId, bucketId, region, objectKey)
// 替换为自己cdn域名
cdn := "http://abc.cdn.com"
GetCDNDomainURL(cdn, objectKey)
// 替换为自己播放密钥,控制台可以查询
var secret = []byte("aaaaaaaaaaa")
GetCIDomainURL(tak, tsk, token, appId, bucketId, region, objectKey, secret)
// GetCOSDomainURL(tak, tsk, token, appId, bucketId, region, objectKey, secret)
// var playkey = []byte("aaaaaaaaaaa")
// 生成token
// jwtToken, _ := GenerateToken(appId, bucketId, objectKey, playkey)
// GetCOSDomainVideoEncryptionURL(tak, tsk, token, bucketId, region, objectKey, jwtToken)
// GetCDNDomainURL(cdn, objectKey, jwtToken)
}

0 comments on commit c5f0e59

Please sign in to comment.