Manage online editing projects

Updated at:

Sample code for managing online editing projects in Intelligent Media Services by calling OpenAPI operations through a server-side SDK.

Notes

The Title parameter is required when you create an online editing project. To submit a video editing job by calling the SubmitMediaProducingJob operation, you must also set the Timeline parameter.

Sample code

For online debugging, visit the Alibaba Cloud OpenAPI Developer Portal.

package main

import (
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    ice "github.com/alibabacloud-go/ice-20201109/v2/client"
    "github.com/aliyun/credentials-go/credentials"
    "github.com/alibabacloud-go/tea/tea"
)

func main() {

    // An AccessKey of an Alibaba Cloud account has permissions to access all APIs. Use a Resource Access Management (RAM) user for API calls and routine O&M.
    // In this example, the AccessKey ID and AccessKey secret are stored in environment variables. For more information about how to configure them, see https://help.aliyun.com/document_detail/378661.html.
    credential, _err := credentials.NewCredential(nil)
    if _err != nil {
      panic(_err)
    }
    iceClient, _err := ice.NewClient(&openapi.Config{
      Credential: credential,
      Endpoint: tea.String("ice.cn-shanghai.aliyuncs.com"),
    })

    // To hard-code the AccessKey ID and AccessKey secret, use the following code. Do not hard-code the AccessKey ID and AccessKey secret into your project code. This can lead to an AccessKey leak and compromise the security of all resources in your account.
    // config := new(openapi.Config)
    // config.SetAccessKeyId("<accessKeyId>").
    //     SetAccessKeySecret("<accessKeySecret>").
    //     SetRegionId("<regionId>").
    //     SetEndpoint("<endpoint>")
    // iceClient, _err := ice.NewClient(config)

    if _err != nil {
      panic(_err)
    }

    // Create an online editing project.
    title := "Editing project title"
    description := "Editing project description"
    timeLine := "{\"VideoTracks\":[{\"VideoTrackClips\":[{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****1656bca4474999c961a6d2a2****\"}]}]}"
    coverUrl := "http://****/coverUrl.jpg"
    createEditingProjectRequest := ice.CreateEditingProjectRequest{
        Title:       &title,
        Description: &description,
        Timeline:    &timeLine,
        CoverURL:    &coverUrl,
    }
    createEditingProjectResult, err := iceClient.CreateEditingProject(&createEditingProjectRequest)
    fmt.Println(createEditingProjectResult, err)

    // Get a single online editing project.
    projectId := "****4eb5fa69-56e1-4854-87e3-b0f1b6a9****"
    getEditingProjectRequest := ice.GetEditingProjectRequest{
        ProjectId: &projectId,
    }
    getEditingProjectResult, err := iceClient.GetEditingProject(&getEditingProjectRequest)
    fmt.Println(getEditingProjectResult, err)

    // Modify an online editing project.
    updateTimeLine := "{\"VideoTracks\":[{\"VideoTrackClips\":[{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"}]}]}"
    updateEditingProjectRequest := ice.UpdateEditingProjectRequest{
        ProjectId: &projectId,
        Timeline:  &updateTimeLine,
    }
    updateEditingProjectResult, err := iceClient.UpdateEditingProject(&updateEditingProjectRequest)
    fmt.Println(updateEditingProjectResult, err)

    // Delete online editing projects.
    deleteEditingProjectsRequest := ice.DeleteEditingProjectsRequest{
        ProjectIds: &projectId,
    }
    deleteEditingProjectsResult, err := iceClient.DeleteEditingProjects(&deleteEditingProjectsRequest)
    fmt.Println(deleteEditingProjectsResult, err)

    // Search for online editing projects.
    status := "Producing"
	searchEditingProjectRequest := ice.SearchEditingProjectRequest{
		Status: &status,
	}
    searchEditingProjectResult, err := iceClient.SearchEditingProject(&searchEditingProjectRequest)
    fmt.Println(searchEditingProjectResult, err)
}

Related APIs