package models import ( openapi "github.com/alibabacloud-go/darabonba-openapi/client" //util "github.com/alibabacloud-go/tea-utils/service" //console "github.com/alibabacloud-go/tea-console/client" env "github.com/alibabacloud-go/darabonba-env/client" vod20170321 "github.com/alibabacloud-go/vod-20170321/v2/client" "github.com/alibabacloud-go/tea/tea" "log" "fmt" "regexp" "github.com/spf13/viper" ) // 使用AK&SK初始化账号Client func InitVodClient (accessKeyId *string, accessKeySecret *string, regionId *string) (_result *vod20170321.Client, _err error) { config := &openapi.Config{} config.AccessKeyId = accessKeyId config.AccessKeySecret = accessKeySecret config.RegionId = regionId _result = &vod20170321.Client{} _result, _err = vod20170321.NewClient(config) return _result, _err } func GetVideoM3U8(content string) (blob string) { if len(regexp.MustCompile(`image.gameuiux.cn`).FindStringSubmatch(content)) > 0 { key := regexp.MustCompile(`^https?://image.gameuiux.cn/`).ReplaceAllString(content, "") // 从OSS中读取视频 bucket := GetBucket("gameui-image2") body, err := bucket.GetObject(key) if err != nil { log.Println("读取视频失败", err) return } defer body.Close() // 先打印出视频对象 fmt.Println(body) // 配置 accessKeyID := viper.GetString("video.accessKeyID") accessKeySecret := viper.GetString("video.accessKey") //endpoint := viper.GetString("video.endpoint") regionId := "cn-shanghai" // 连接点播服务的OSS client, _err := InitVodClient(env.GetEnv(tea.String(accessKeyID)), env.GetEnv(tea.String(accessKeySecret)), ®ionId) if _err != nil { return _err.Error() } fmt.Println(client) return "空" //// 1.获取视频上传地址和凭证,并生成视频信息 //createUploadVideoRequest := &vod20170321.CreateUploadVideoRequest{ // Title: args[1], // FileName: args[2], //} //createUploadVideoResponse, _err := client.CreateUploadVideo(createUploadVideoRequest) //if _err != nil { // return _err.Error() //} //console.Log(util.ToJSONString(tea.ToMap(createUploadVideoResponse))) //// 媒体id //uploadVideoId := createUploadVideoResponse.Body.VideoId //console.Log(uploadVideoId) //// 如果视频文件过大,上传超时后可以刷新视频凭证,然后继续上传 //refreshUploadVideoRequest := &vod20170321.RefreshUploadVideoRequest{ // VideoId: uploadVideoId, //} //refreshUploadVideoReponse, _err := client.RefreshUploadVideo(refreshUploadVideoRequest) //if _err != nil { // return _err //} //console.Log(util.ToJSONString(tea.ToMap(refreshUploadVideoReponse))) //// 2.oss视频文件上传,需要用户实现 //// 3.上传过程中,获取媒体上传详情 //getUploadDetailsRequest := &vod20170321.GetUploadDetailsRequest{ // MediaIds: uploadVideoId, //} //getUploadDetailsReponse, _err := client.GetUploadDetails(getUploadDetailsRequest) //if _err != nil { // return _err //} //console.Log(util.ToJSONString(tea.ToMap(getUploadDetailsReponse))) //// 4.媒体上传完成之后,可以获取媒体播放信息进行播放 //// 4.1 通过播放凭证播放 //getPlayInfoRequest := &vod20170321.GetPlayInfoRequest{ // VideoId: uploadVideoId, //} //getPlayInfoReponse, _err := client.GetPlayInfo(getPlayInfoRequest) //if _err != nil { // return _err //} //console.Log(util.ToJSONString(tea.ToMap(getPlayInfoReponse))) //// 4.2 通过播放地址播放 //getVideoPlayAuthRequest := &vod20170321.GetVideoPlayAuthRequest{ // VideoId: uploadVideoId, //} //getVideoPlayAuthReponse, _err := client.GetVideoPlayAuth(getVideoPlayAuthRequest) //if _err != nil { // return _err //} //console.Log(util.ToJSONString(tea.ToMap(getVideoPlayAuthReponse))) } return }