Transcodificar um vídeo com a API Transcoder
Nesta página, mostramos como criar um job básico de transcodificação de vídeo usando as
configurações padrão da API Transcoder e do curl
, Windows PowerShell ou as
bibliotecas de cliente.
Também é possível executar este guia de início rápido no Console do Google Cloud usando uma das seguintes linguagens de programação:
Antes de começar
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Criar ou selecionar um projeto do Google Cloud.
-
Criar um projeto do Cloud:
gcloud projects create PROJECT_ID
-
Selecionar o projeto do Cloud que você criou:
gcloud config set project PROJECT_ID
-
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API Transcoder:
gcloud services enable transcoder.googleapis.com
-
Crie as credenciais de autenticação para sua Conta do Google:
gcloud auth application-default login
-
Atribua os papéis à sua Conta do Google. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/transcoder.admin, roles/storage.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Substitua
PROJECT_ID
pela ID do seu projeto. - Substitua
EMAIL_ADDRESS
pelo seu endereço de e-mail. - Substitua
ROLE
por cada papel individual.
- Substitua
- Instale a CLI do Google Cloud.
-
Para inicializar a CLI gcloud, execute o seguinte comando:
gcloud init
-
Criar ou selecionar um projeto do Google Cloud.
-
Criar um projeto do Cloud:
gcloud projects create PROJECT_ID
-
Selecionar o projeto do Cloud que você criou:
gcloud config set project PROJECT_ID
-
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
Ative a API Transcoder:
gcloud services enable transcoder.googleapis.com
-
Crie as credenciais de autenticação para sua Conta do Google:
gcloud auth application-default login
-
Atribua os papéis à sua Conta do Google. Execute uma vez o seguinte comando para cada um dos seguintes papéis do IAM:
roles/transcoder.admin, roles/storage.admin
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Substitua
PROJECT_ID
pela ID do seu projeto. - Substitua
EMAIL_ADDRESS
pelo seu endereço de e-mail. - Substitua
ROLE
por cada papel individual.
- Substitua
Crie um bucket do Cloud Storage
- No console do Cloud, acesse a página Buckets do Cloud Storage.
- Clique em Criar bucket.
- Na página Criar um bucket, insira as informações do seu bucket. Para ir à próxima
etapa, clique em Continuar.
- Em Nomear o bucket, insira um nome exclusivo. Não inclua informações confidenciais no nome do bucket já que o namespace dele é global e visível para o público.
-
Em Escolha um local para armazenar seus dados, faça o seguinte:
- Selecione uma opção de Tipo de local.
- Escolha uma opção de Local.
- Em Escolha uma classe de armazenamento padrão para seus dados, selecione o seguinte: Standard.
- Em Escolha como controlar o acesso a objetos, selecione uma opção de Controle de acesso.
- Em Configurações avançadas (opcional), especifique um método de criptografia, uma política de retenção ou rótulos de bucket.
- Clique em Criar.
- Clique em Criar pasta e digite um nome para criar uma pasta em que as saídas de vídeo codificadas serão salvas.
Transcodificar um vídeo usando a API Transcoder
Você precisa de um vídeo com pelo menos cinco segundos de duração da máquina local para as etapas a seguir (vídeo de amostra). Consulte a lista de formatos de entrada e saída compatíveis.
Faça upload de um vídeo para o bucket do Cloud Storage
- No console do Google Cloud, acesse a página "Navegador" do Cloud Storage.
Acesse a página "Navegador do Cloud Storage" - Clique no nome do bucket para abri-lo.
- Clique em Fazer o upload dos arquivos.
- Selecione um arquivo de vídeo para fazer o upload da sua máquina local.
Seu vídeo agora está salvo no bucket do Cloud Storage.
Criar um job de transcodificação
Por padrão, a API Transcoder transcodifica vídeos usando a codificação H.264 e o empacotamento MP4, HLS e MPEG-DASH. Para cada vídeo de entrada, ele oferece versões de saída em alta definição (1280 x 720 pixels) e definição padrão (640 x 360 pixels).
Para criar um job, use o método
projects.locations.jobs.create
. Os exemplos de código a seguir criam um job básico de transcodificação usando uma predefinição.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud listado nas Configurações do IAM
- LOCATION: o local onde seu job será executado. Use
uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_BUCKET_NAME: o nome do bucket do Cloud Storage criado.
- STORAGE_INPUT_VIDEO: o nome do vídeo no
bucket do Cloud Storage que você está transcodificando, como
my-vid.mp4
. Este campo precisa considerar todas as pastas que você criou no bucket (por exemplo,input/my-vid.mp4
). - STORAGE_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.
Solicitar corpo JSON:
{ "inputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO", "outputUri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/", "templateId": "preset/web-hd" }
Para enviar a solicitação, expanda uma destas opções:
Esse exemplo de REST específico usa o parâmetro de consulta fields
opcional para mostrar apenas o nome do recurso criado na resposta.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID" }
gcloud CLI
- Faça as seguintes substituições pelo
comando
gcloud
: - STORAGE_BUCKET_NAME: o nome do bucket do Cloud Storage criado.
- STORAGE_INPUT_VIDEO: o
nome do vídeo no bucket do Cloud Storage que você está
transcodificando, como
my-vid.mp4
. Esse campo precisa considerar todas as pastas criadas no bucket (por exemplo,input/my-vid.mp4
). - LOCATION: o local em que
o job será executado. Use uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- STORAGE_OUTPUT_FOLDER: nome da pasta do Cloud Storage em que você quer salvar as saídas de vídeo codificadas.
- Execute este comando:
gcloud transcoder jobs create \ --input-uri="gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" \ --location=LOCATION \ --output-uri="gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/"
Uma resposta semelhante a esta será exibida:{ "config": { ... }, "createTime": CREATE_TIME, "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "state": "PENDING", "ttlAfterCompletionDays": 30 }
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# da API Transcoder.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go da API Transcoder.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java da API Transcoder.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js da API Transcoder.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP da API Transcoder.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python da API Transcoder.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby da API Transcoder.
Copie a JOB_ID retornada. Você precisa dela para ver o status do job.
Verificar o status do job de transcodificação
Para verificar o status de um job, use o método
projects.locations.jobs.get
. Os exemplos de código a seguir
recebem os detalhes do job e
mostram o estado dele.
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
gcloud CLI
- Faça as seguintes substituições pelo
comando
gcloud
: - JOB_ID: o ID do job que você criou.
- LOCATION: o local do
job. Use uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- Execute este comando:
gcloud transcoder jobs describe JOB_ID --location=LOCATION
Uma resposta semelhante a esta será exibida:{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/jobs/JOB_ID", "config": { "inputs": [ { "key": "input0", "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_INPUT_VIDEO" } ], "editList": [ { "key": "atom0", "inputs": [ "input0" ], "startTimeOffset": "0s" } ], "elementaryStreams": [ { "videoStream": { "h264": { "widthPixels": 640, "heightPixels": 360, "frameRate": 30, "bitrateBps": 550000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 550000, "vbvFullnessBits": 495000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream0" }, { "videoStream": { "h264": { "widthPixels": 1280, "heightPixels": 720, "frameRate": 30, "bitrateBps": 2500000, "pixelFormat": "yuv420p", "rateControlMode": "vbr", "crfLevel": 21, "gopDuration": "3s", "vbvSizeBits": 2500000, "vbvFullnessBits": 2250000, "entropyCoder": "cabac", "bFrameCount": 3, "aqStrength": 1, "profile": "high", "preset": "veryfast" } }, "key": "video-stream1" }, { "audioStream": { "codec": "aac", "bitrateBps": 64000, "channelCount": 2, "channelLayout": [ "fl", "fr" ], "sampleRateHertz": 48000 }, "key": "audio-stream0" } ], "muxStreams": [ { "key": "sd", "fileName": "sd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "hd", "fileName": "hd.mp4", "container": "mp4", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "media-sd", "fileName": "media-sd.ts", "container": "ts", "elementaryStreams": [ "video-stream0", "audio-stream0" ] }, { "key": "media-hd", "fileName": "media-hd.ts", "container": "ts", "elementaryStreams": [ "video-stream1", "audio-stream0" ] }, { "key": "video-only-sd", "fileName": "video-only-sd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream0" ] }, { "key": "video-only-hd", "fileName": "video-only-hd.m4s", "container": "fmp4", "elementaryStreams": [ "video-stream1" ] }, { "key": "audio-only", "fileName": "audio-only.m4s", "container": "fmp4", "elementaryStreams": [ "audio-stream0" ] } ], "manifests": [ { "fileName": "manifest.m3u8", "type": "HLS", "muxStreams": [ "media-sd", "media-hd" ] }, { "fileName": "manifest.mpd", "type": "DASH", "muxStreams": [ "video-only-sd", "video-only-hd", "audio-only" ] } ], "output": { "uri": "gs://STORAGE_BUCKET_NAME/STORAGE_OUTPUT_FOLDER/" } }, "state": "PENDING", "createTime": CREATE_TIME, "ttlAfterCompletionDays": 30 }
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# da API Transcoder.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go da API Transcoder.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java da API Transcoder.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js da API Transcoder.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP da API Transcoder.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python da API Transcoder.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby da API Transcoder.
Se state
for SUCCEEDED
, o job estará concluído, e as saídas de vídeo estarão
disponíveis na lista de arquivos codificados do bucket do Cloud Storage.
Assistir o vídeo
Para reproduzir o arquivo de mídia gerado no Shaka Player (em inglês), conclua as seguintes etapas:
- Torne o bucket do Cloud Storage criado publicamente legível.
- Para ativar o compartilhamento de recursos entre origens (CORS) em um bucket do Cloud Storage, faça o seguinte:
- Crie um arquivo JSON que contenha o seguinte:
[ { "origin": ["https://shaka-player-demo.appspot.com/"], "responseHeader": ["Content-Type", "Range"], "method": ["GET", "HEAD"], "maxAgeSeconds": 3600 } ]
-
Execute o seguinte comando depois de substituir JSON_FILE_NAME pelo
nome do arquivo JSON que você criou na etapa anterior:
gsutil cors set JSON_FILE_NAME.json gs://STORAGE_BUCKET_NAME
- Crie um arquivo JSON que contenha o seguinte:
- Escolha um dos arquivos MP4 ou de manifesto gerados pelo job de transcodificação no bucket do Cloud Storage. Clique em Copiar URL na coluna Acesso público do arquivo.
- Acesse o Shaka Player, um player de transmissão ao vivo on-line.
- Clique em Conteúdo personalizado na barra de navegação superior.
- Clique no botão +.
Cole o URL público do arquivo na caixa URL do manifesto.
Digite um nome na caixa Nome.
Clique em Save.
Clique em Jogar
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Excluir o bucket
No console do Google Cloud, acesse a página "Navegador" do Cloud Storage.
Marque a caixa de seleção ao lado do bucket criado.
Clique em Excluir.
Na janela pop-up exibida, clique em Excluir para excluir permanentemente o bucket e o conteúdo dele.
Excluir o job
REST
Antes de usar os dados da solicitação, faça as substituições a seguir:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{}
gcloud CLI
- Faça as seguintes substituições pelo
comando
gcloud
: - JOB_ID: o ID do job que você criou.
- LOCATION: o local do
job. Use uma das regiões compatíveis:
us-central1
us-west1
us-west2
us-east1
us-east4
southamerica-east1
asia-east1
asia-south1
asia-southeast1
europe-west1
europe-west2
europe-west4
- Execute este comando:
gcloud transcoder jobs delete JOB_ID --location=LOCATION
Uma resposta semelhante a esta será exibida:Deleted job [projects/PROJECT_ID/locations/LOCATION/jobs/JOB_ID].
C#
Antes de testar esta amostra, siga as instruções de configuração do C# no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API C# da API Transcoder.
Go
Antes de testar esta amostra, siga as instruções de configuração do Go no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Go da API Transcoder.
Java
Antes de testar esta amostra, siga as instruções de configuração do Java no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Java da API Transcoder.
Node.js
Antes de testar esta amostra, siga as instruções de configuração do Node.js no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Node.js da API Transcoder.
PHP
Antes de testar esta amostra, siga as instruções de configuração do PHP no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API PHP da API Transcoder.
Python
Antes de testar esta amostra, siga as instruções de configuração do Python no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Python da API Transcoder.
Ruby
Antes de testar esta amostra, siga as instruções de configuração do Ruby no guia de início rápido da API Transcoder usando bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Ruby da API Transcoder.
Revogar credenciais
-
Opcional: revogue as credenciais de autenticação que você criou e exclua o arquivo de credenciais local:
gcloud auth application-default revoke
-
Opcional: revogar credenciais da CLI gcloud.
gcloud auth revoke
A seguir
- Leia a visão geral da API Transcoder.
- Consulte os guias disponíveis para saber como usar a API Transcoder.