Todos os produtos
Search
Central de documentação

:Integração do lado do servidor

Última atualização: Jun 27, 2026

O servidor do ApsaraVideo for Short Video gerencia a troca de dados com o aplicativo cliente e o ApsaraVideo VOD, processa a lógica de negócios e administra os dados operacionais. Este tópico explica o processo de integração do lado do servidor.

Pré-requisitos

Procedimento

Carregar o código-fonte

  1. Baixe o código-fonte do AppServer e do console de gerenciamento do ApsaraVideo for Short Video. Para obter o link de download, consulte ApsaraVideo for Short Video.

  2. No servidor onde o arquivo de origem está armazenado, execute o comando a seguir para carregar o pacote de código-fonte na instância ECS.

    scp <source_code_file> user@<ECS_instance_IP>:<destination_path>

    scp ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip user@10.0.0.0:/home/user/workspace/

    Neste exemplo, ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip é o arquivo de código-fonte, user é o nome de usuário da instância ECS, 10.0.0.0 é o endereço IP da instância ECS e /home/user/workspace/ é o caminho de upload.

    Nota

    Os valores apresentados para o arquivo de código-fonte, nome de usuário do ECS, endereço IP da instância ECS e caminho de upload são apenas exemplos. Substitua-os pelas suas informações reais.

  3. Faça login na instância ECS e descompacte o pacote de código-fonte.

    cd /home/user/workspace

    unzip ApsaraVideo_QuVideo_v1.4.0_Server_20191226.zip

    Nota

    Caso o unzip não esteja instalado, execute sudo apt install unzip.

Inicializar e configurar o banco de dados

Nota

Você pode criar uma biblioteca de músicas autogerenciada.

  • A estrutura de dados retornada pelo seu serviço deve corresponder àquela fornecida pelo serviço da Alibaba Cloud para recuperação de listas de músicas. Caso contrário, a recuperação falhará.

  • Se você utilizar uma estrutura de dados personalizada, ajuste a lógica de código na camada demo.

  1. Crie um banco de dados chamado voddemo.

    cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/sql

    mysqladmin -u root -p create voddemo

  2. Crie uma tabela e uma conta de administrador.

    mysql -u root -p voddemo < ./appserver_create_table.sql

    Nota

    Além de criar a tabela, o script appserver_create_table.sql utiliza uma instrução INSERT para criar uma conta de administrador do console com o nome de usuário admin e senha 123456. Use essa conta para fazer login no console demo como administrador assim que a integração estiver concluída.

  3. Modifique a regra de diferenciação entre maiúsculas e minúsculas do banco de dados.

    1. Edite o arquivo de configuração do banco de dados.

      sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

    2. Pressione a tecla I e adicione lower_case_table_names=1 ao final do arquivo.

    3. Pressione Esc, insira :wq! para salvar e sair.

    4. Reinicie o banco de dados para aplicar a alteração.

      sudo service mysql restart

  4. Configure o endereço do banco de dados.

    1. Edite o arquivo de configuração do código-fonte.

      vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties

    2. Pressione I e modifique os parâmetros a seguir.

      spring.datasource.url = jdbc:mysql://<Database_IP_address (e.g., 127.0.0.1)>:3306/<Database_name (e.g., voddemo)>?useSSL=false&useUnicode=true&characterEncoding=UTF-8
      spring.datasource.username = <Database_username, e.g., admin>
      spring.datasource.password = <Database_password>
      Nota
      • Se o banco de dados e o servidor estiverem na mesma instância ECS, defina o endereço IP do banco de dados como 127.0.0.1. Caso contrário, utilize o endereço IP da máquina onde o banco de dados está localizado.

      • O banco de dados criado durante a inicialização chama-se voddemo.

    3. Pressione Esc, insira :wq! para salvar e sair.

Configurar uma função RAM

  1. Siga as etapas descritas em Criar uma função. Após selecionar as permissões na Etapa 6, prossiga com as etapas abaixo. Você pode definir um nome de função personalizado. Este tópico usa alivc-demo-role como exemplo.

  2. Na página Roles, clique em o nome da função RAM criada, por exemplo, alivc-demo-role, para localizar seu ARN. Anote o nome da função RAM e o ARN para uso posterior.

  3. Na página Roles, clique em o nome da função RAM criada, por exemplo, alivc-demo-role. Clique em a aba Trust Policy, selecione Edit Trust Policy e modifique a política de confiança conforme abaixo:

    {
        "Statement": [
            {
                "Action": "sts:AssumeRole", 
                "Effect": "Allow", 
                "Principal": {
                    "Service": [
                        "ecs.aliyuncs.com"
                    ]
                }
            }
        ], 
        "Version": "1"
    }

    Essa política define a função como uma função de serviço, permitindo que o serviço de nuvem confiável (ECS) a assuma. Se a política de confiança não for modificada, não será possível anexar a função RAM a uma instância ECS.

    Defina o parâmetro Instance ID como ["Instance ID"].

  4. Anexe a função RAM à instância ECS.

    Utilize a API AttachInstanceRamRole do ECS no OpenAPI Explorer. Para mais informações, consulte OpenAPI Explorer.

    Nota
    • RegionId: ID da região onde sua instância ECS está localizada, por exemplo, China (Shanghai). Essa informação está disponível no console ECS.

    • RamRoleName: Nome da função RAM. Este exemplo utiliza alivc-demo-role.

    • InstanceIds: ID da instância ECS do lado do servidor à qual você deseja anexar a função RAM. Consulte o console ECS para obter esse valor. O ID deve estar no formato de array, por exemplo: ["i-bp135jrddxxf9tgo****"].

    Clique em Initiate Call. Uma chamada bem-sucedida retorna uma mensagem de sucesso nos resultados de depuração à direita.

  5. Execute o comando a seguir no terminal do ECS para verificar se a função RAM está associada à instância ECS.

    curl http://100.100.100.200/latest/meta-data/ram/security-credentials/alivc-demo-role

    A resposta a seguir indica que a autorização temporária STS foi bem-sucedida e que a função RAM está associada à instância ECS.

    {
    "AccessKeyId" : "STS.XXXXXXXXXXXX",
    "AccessKeySecret" : "XXXXXXXXXXXXXXXX",
    "Expiration" : "2020-11-20T14:33:31Z",
    "SecurityToken" : "XXXXXXXXXXXXXXXXXXXXXX",
    "LastUpdated" : "2020-11-20T08:33:31Z",
    "Code" : "Success"
    }
    Nota

    Cada instância ECS pode ter apenas uma função RAM anexada. Para alterar a função RAM anexada, primeiro chame DetachInstanceRamRole no OpenAPI Explorer para desanexar a função atual da instância ECS. Em seguida, use AttachInstanceRamRole para anexar a nova função RAM.

  6. Configure as informações relacionadas ao RAM.

    1. Edite o arquivo de configuração do código-fonte.

      vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties

    2. Pressione I e modifique o arquivo conforme o exemplo abaixo.

      roleArn = acs:ram::xxx:role/alivc-demo-role
      roleSessionName = vod-session
      roleName = alivc-demo-role
      # The following block contains outdated examples and should be ignored.
      Nota
      • O parâmetro REGION_CN_HANGZHOU foi descontinuado. Utilize VOD_REGIONID em seu lugar, conforme especificado na seção de configuração do ApsaraVideo VOD.

      • roleArn especifica o ARN obtido no console RAM.

      • roleSessionName especifica o nome da sessão para o token temporário. Você pode personalizar esse nome.

      • roleName especifica o nome da função RAM obtido no console RAM. Neste exemplo, o nome é alivc-demo-role.

    3. Pressione Esc, insira :wq! para salvar e sair.

  7. Configure o ApsaraVideo VOD.

    1. Edite o arquivo de configuração do código-fonte.

      vim /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/resources/application.properties

    2. Pressione I e modifique os parâmetros conforme necessário.

      # Transcoding template ID
      TEMPLATEGROUP_ID = xxx
      LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID = xxxxxxxx
      TAB_TEMPLATEGROUP_ID = xxxxxxxx
      # Domain name
      DOMAIN_NAME = http://xxx:8080/
      AVATAR_DOMAIN_NAME = http://xxx:8080/resource/
      AVATAR_URL = 1.png,2.png
      VOD_REGIONID = cn-hangzhou
      # Policy for ApsaraVideo VOD services
      policy = {"Version": "1", "Statement": [ {"Action": ["vod:*"], "Resource": ["*"  ],"Effect": "Allow"}]}
      # Taihe Music appkey
      OPEN_API_URL = https://xxxxxxxx.xxxxxxxx.com
      Q_SOURCE = xxxxxxxx
      CALLBACK_PRIVETEKEY = VodTest01
      CALLBACK_NAME = http://xxx:8080/vodcallback/callback
      APP_ID = app-1000000
      AUDIT_SETTINGS_FLAG = on
      auth_key = xxxxx
      live_domain = http://xxxxx.aliyuncs.com
      package_name = IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo

      Parâmetro

      Obrigatório

      Descrição

      TEMPLATEGROUP_ID

      Sim

      ID do grupo de modelos de transcodificação. Para mais informações, consulte Grupos de modelos de transcodificação.

      LONGVIDEO_TRANSCODE_TEMPLATEGROUP_ID

      Não

      Grupo de modelos de transcodificação utilizado para vídeos longos em um fluxo de trabalho de publicação antes da revisão.

      TAB_TEMPLATEGROUP_ID

      Não

      ID do grupo de modelos de transcodificação Narrowband HD. Após a configuração, você pode recomendar vídeos Narrowband HD no console. Se este ID não for definido, as tentativas de recomendação de vídeos Narrowband HD falharão.

      DOMAIN_NAME

      Sim

      Endereço da instância ECS. Exemplo: http://10.10.10.101:8080/.

      AVATAR_DOMAIN_NAME

      Não

      Endereço para recursos de avatar, correspondente ao endereço de recursos estáticos da instância ECS. Exemplo: http://10.10.10.101:8080/resource/.

      AVATAR_URL

      Não

      Lista separada por vírgulas com os nomes dos arquivos de imagem de avatar, como 1.png,2.png.

      Nota

      Coloque os arquivos de imagem de avatar correspondentes, 1.png e 2.png, no diretório /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/src/main/webapp/resource. Se o serviço de avatar não for configurado, os usuários móveis ficarão sem avatares, mas as demais funções não serão afetadas.

      VOD_REGIONID

      Sim

      Região onde o serviço ApsaraVideo VOD está localizado. Exemplo: cn-shanghai.

      policy

      Sim

      Política que restringe ainda mais as permissões quando a função é assumida. Para mais informações, consulte Usar políticas RAM para autorização personalizada.

      CALLBACK_PRIVETEKEY

      Sim

      Chave privada para autenticação de callback. Para mais informações, consulte Callback Settings.

      CALLBACK_NAME

      Sim

      URL de callback. Exemplo: http://<Public_IP_of_ECS_instance>:8080/vodcallback/callback. Este exemplo utiliza http://10.10.10.101:8080/vodcallback/callback.

      AUDIT_SETTINGS_FLAG

      Sim

      Define o modo de revisão de conteúdo. Valor padrão: on. Valores válidos:

      • on: revisão antes da publicação.

      • off: publicação antes da revisão.

      package_name

      Sim

      Nomes de pacote válidos para o interceptor. Separe múltiplos nomes de pacote com vírgulas. O valor padrão é IOS,ANDROID,TEST,com.aliyun.apsara.svideo,com.aliyun.apsaravideo,com.aliyun.solution.longvideo.

      Nota
      • com.aliyun.apsara.svideo é o nome do pacote para o cliente Android neste exemplo.

      • Se o Bundle Identifier do seu cliente iOS já estiver registrado, o cliente não poderá ser executado. Utilize um Bundle Identifier personalizado, como com.<Company_name>.<Project_name>, para a assinatura do cliente iOS e adicione-o ao parâmetro package_name para garantir acesso válido.

      • O interceptor permite que apenas aplicativos móveis com nomes de pacote válidos acessem o servidor. Caso contrário, as solicitações do cliente móvel serão negadas com um erro 403 Forbidden.

    3. Pressione Esc, insira :wq! para salvar e sair.

  8. Execute o serviço.

    1. Compile e empacote o código.

      cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226

      mvn clean package -Dmaven.test.skip=true

      Nota
      • Se o Maven não estiver instalado, execute apt install maven para instalá-lo.

      • O tempo de empacotamento depende da largura de banda e do desempenho da instância. Neste exemplo, o empacotamento inicial leva cerca de 30 minutos.

      Após a conclusão do empacotamento, o arquivo sdk-api-0.0.1-SNAPSHOT.jar será gerado no diretório /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target/.

    2. Implante o arquivo JAR e inicie o serviço.

      cd /home/user/workspace/ApsaraVideo_QuVideo_v1.4.0_Server_20191226/target

      nohup java -jar sdk-api-0.0.1-SNAPSHOT.jar &

      Nota
      • Ao executar o comando, um prompt nohup aparecerá. Pressione Enter para rodar o programa em segundo plano.

      • Após a execução do comando, um arquivo de log chamado nohup.out será gerado no diretório atual. Execute o comando cat nohup.out para visualizar o log. Se o log contiver a mensagem start success, o serviço foi iniciado com sucesso.

      • Se sua instância ECS tiver pouca memória e você precisar reempacotar e reimplementar o código-fonte do servidor, execute o comando jps para visualizar o ID do processo do programa JAR em execução. Em seguida, execute o comando kill -9 <JAR_process_ID> para encerrar o processo antes de reempacotar e reimplementar novamente. Caso contrário, o processo de empacotamento falhará devido à falta de memória.