

Aviso de fim do suporte: em 13 de novembro de 2025, o suporte para o Amazon Elastic Transcoder AWS será interrompido. Depois de 13 de novembro de 2025, você não poderá mais acessar o console do Elastic Transcoder ou os recursos do Elastic Transcoder.

Para obter mais informações sobre a transição para AWS Elemental MediaConvert, visite esta [postagem do blog](https://aws.amazon.com/blogs/media/how-to-migrate-workflows-from-amazon-elastic-transcoder-to-aws-elemental-mediaconvert/).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Código de exemplo do AWS SDK
<a name="sample-code"></a>

Esta seção contém um exemplo de código que mostra como usar a AWS SDKs para Java, Ruby, PHP e Python para realizar as seguintes operações:
+ Criar uma lista de reprodução do HLS no Amazon Elastic Transcoder
+ Criar um trabalho no Elastic Transcoder
+ Sondar uma fila do Amazon Simple Queue Service (Amazon SQS)
+ Analisar uma notificação do Amazon Simple Notification Service (Amazon SNS)
+ Tratar a notificação do Amazon SNS

Essas operações representam as melhores práticas do Elastic Transcoder. A realização de sondagem em uma fila do Amazon SQS permite o uso de sondagem longa, que escala de maneira mais eficiente do que a sondagem regular, e configurar notificações do Amazon SNS permite que o Elastic Transcoder envie mensagens para a fila do Amazon SQS.

O código de exemplo mostra como realizar a transcodificação para HLS (HTTP Live Streaming) e como lidar com a notificação do Amazon SNS após ela ter sido removida da fila do Amazon SQS.

Se você estiver usando uma linguagem para a qual existe um SDK, recomendamos que você use o SDK em vez de tentar trabalhar com o. APIs Você descobrirá que o uso do SDKs simplifica a autenticação, se integra facilmente ao seu ambiente de desenvolvimento e fornece acesso fácil aos comandos relacionados.

**Topics**
+ [Histórico do código de exemplo do AWS SDK](#sample-intro)
+ [Configuração de seu ambiente](#env-setup)
+ [Exemplos de Java](#java-sample)
+ [Exemplos do Ruby](#ruby-sample)
+ [Exemplos de PHP](#php-sample)
+ [Exemplos do Python](#python-sample)

## Histórico do código de exemplo do AWS SDK
<a name="sample-intro"></a>

### HTTP (HLS Live Streaming)
<a name="hls-intro"></a>

Você utiliza saídas de HTTP Live Streaming (HLS) para entregar conteúdo adaptável em taxas de bits para players compatíveis com HLS. Exemplos de dispositivos habilitados para HLS são dispositivos Android 4\$1, dispositivos iOS, reprodutores de mídia de desktop, como QuickTime ou VLC, e reprodutores de navegador, como jwplayer. A taxa de bits adaptável permite que você ajuste automaticamente a qualidade do conteúdo entregue com base na qualidade da conexão do cliente.

### Notificações
<a name="notification-intro"></a>

Se você realizar a sondagem da API `ReadJob` do Elastic Transcoder para monitorar o status do trabalho, precisará chamar o `ReadJob` continuamente a cada trabalho enviado. Essa metodologia não pode ser escalada à medida que o número de trabalhos de transcodificação aumenta. Para resolver esse problema, o Elastic Transcoder pode publicar notificações no Amazon SNS, o que fornece um mecanismo orientado por eventos para rastrear o status do trabalho.

Cada notificação do Elastic Transcoder é enviada como um objeto JSON no campo `Message`. Como as notificações são enviadas em formato JSON, é necessário escapar a notificação do Elastic Transcoder na string da mensagem. Para obter informações sobre o formato e o conteúdo das notificações do Elastic Transcoder, consulte a seção [Notificações](https://docs.aws.amazon.com/elastictranscoder/latest/developerguide/notifications.html).

Ao escrever um código personalizado para lidar com as notificações de status do trabalho, siga estas práticas recomendadas:
+ **Os manipuladores devem ser idempotentes.** É possível que uma notificação seja entregue mais de uma vez.
+ **Os manipuladores devem oferecer suporte a notificações de fora de ordem.** É possível que as notificações sejam entregues fora de ordem.
+ **Os manipuladores devem ser capazes de processar uma notificação para qualquer trabalho.** Não há como garantir que uma notificação para um trabalho específico seja entregue a um determinado funcionário.
+ **Os manipuladores devem ser operações curtas.** Todas as mensagens devem ser tratadas e excluídas antes do tempo limite de visibilidade se esgotar. Se o tempo de visibilidade for de 15 segundos e um máximo de 5 mensagens for retornado do Amazon SQS, cada mensagem deve ser manipulada e excluída da fila em menos de 3 segundos. Se o processamento demorar mais do que isso, as mensagens não processadas expirarão e serão entregues a um funcionário diferente.

Para Java, Python e Ruby, recomendamos que você consuma notificações realizando a sondagem de uma fila do Amazon SQS que esteja inscrita em seu tópico de notificação. Como o Amazon SQS usa um mecanismo de sondagem longa, a sondagem na fila do Amazon SQS fornece um método escalável para consumir notificações de trabalho. O Amazon SQS também simplifica a disponibilidade e o dimensionamento para quando hosts falham ou durante períodos de carga elevada, e geralmente não requer configuração especial da ACL.

Para PHP executado no Apache, recomendamos que você inscreva seu endpoint diretamente no tópico do Amazon SNS. Isso exige que seu endpoint esteja disponível publicamente, pois o Amazon SNS precisará ser capaz de enviar notificações diretamente para você.

## Configuração de seu ambiente
<a name="env-setup"></a>

Para executar o código de exemplo, você precisa ter um ambiente da AWS configurado. Esta seção orienta você pelo processo de configuração e mostra como criar os recursos da AWS que o Elastic Transcoder precisa para funcionar de maneira otimizada.

**Topics**
+ [Configuração de seu ambiente Java](#env-java)
+ [Configuração de seu ambiente Ruby](#env-ruby)
+ [Configuração de seu ambiente PHP](#env-php)
+ [Configuração do ambiente Python](#env-python)

### Configuração de seu ambiente Java
<a name="env-java"></a>

Esta seção mostra a configuração de seu ambiente Java.

**Topics**
+ [Configuração do AWS SDK para Java](#java-sdk)
+ [Criação de buckets de entrada e saída no Amazon S3](#java-s3)
+ [Criação de um tópico do Amazon SNS para receber notificações de status de trabalho](#java-sns)
+ [Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho](#java-sqs)
+ [Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS](#java-sqs-subscribe)
+ [Criação de um pipeline do Elastic Transcoder](#java-pipeline)
+ [Criação de uma CloudFront distribuição da Amazon para entregar conteúdo de forma escalável](#java-cloudfront)
+ [Modificação da política do bucket do Amazon S3](#java-s3-policy)

O código de exemplo parte de duas premissas importantes:
+ Os exemplos são escritos para funcionar com a versão Java 1.6 ou posterior.
+ Os exemplos são executados usando o Eclipse com o kit de ferramentas da AWS para Eclipse.

#### Configuração do AWS SDK para Java
<a name="java-sdk"></a>

Os exemplos pressupõem que você está usando o kit de ferramentas da AWS para Eclipse. Você precisa do [AWS SDK para Java](https://aws.amazon.com/sdkforjava/) e dos seguintes arquivos JAR do processador Jackson JSON:
+ Jackson Core
+ Jackson Databind
+ Jackson Annotations

O processador Jackson JSON trata as notificações de status de trabalho.

Como alternativa, se você estiver usando o Maven para gerenciar suas dependências, poderá adicionar os seguintes fragmentos de código ao arquivo `pom.xml`:

Propriedade da versão: 

```
    <jackson-2-version>2.2.3</jackson-2-version>
```

Dependências:

```
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>LATEST</version>
    </dependency>
                
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-2-version}</version>
    </dependency>
```

Para obter mais informações, consulte a [documentação do AWS SDK para Java](https://aws.amazon.com/documentation/sdkforjava/).

#### Criação de buckets de entrada e saída no Amazon S3
<a name="java-s3"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. No console, clique em **Criar bucket**.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de entrada.

1. Ainda no console do Amazon S3, clique em **Criar bucket** novamente.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de saída.

#### Criação de um tópico do Amazon SNS para receber notificações de status de trabalho
<a name="java-sns"></a>

1. Abra o console do [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No console, clique em **Criar e adicionar** e selecione **Criar novo tópico**.

1. No campo **Nome do tópico**, insira **ets-sample-topic** e clique em **Criar tópico**.

1. Registre o ARN do `ets-sample-topic`.

#### Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho
<a name="java-sqs"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, clique em **Criar nova fila**.

1. No campo **Nome da fila**, insira **ets-sample-queue** e clique em **Criar fila**.

1. Registre o URL da fila do Amazon SQS.

#### Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS
<a name="java-sqs-subscribe"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, selecione **ets-sample-queue**na lista de filas.

1. Em **Ações da fila**, selecione **Inscrever fila no tópico do Amazon SNS**.

1. Em **Escolher um tópico**, selecione **ets-sample-topic**e clique em **Inscrever-se**.

Você deve receber uma confirmação de que sua fila foi inscrita com sucesso em seu tópico.

#### Criação de um pipeline do Elastic Transcoder
<a name="java-pipeline"></a>

1. Abra o [console do Amazon Elastic Transcoder](https://console.aws.amazon.com/elastictranscoder/home).

1. No console, clique em **Criar novo pipeline**.

1. No campo **Nome do pipeline**, insira **ets-sample-pipeline**.

1. No campo **Bucket de entrada**, insira o nome do seu bucket de entrada.

1. Deixe o **perfil do IAM** como **Console Default Role**.

1. Em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, insira o nome do seu bucket de saída.

1. Ainda em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, selecione a **classe de armazenamento padrão**.

1. Expanda o menu suspenso **Notificações**.

1. Para todos os quatro tipos de eventos, selecione **Usar um tópico existente do SNS** e, em **Selecionar um tópico**, selecione**ets-sample-topic**.

1. Clique em **Criar pipeline**.

1. Registre o ID do pipeline do Elastic Transcoder.

#### Criação de uma CloudFront distribuição da Amazon para entregar conteúdo de forma escalável
<a name="java-cloudfront"></a>

1. Abra o [ CloudFront console da Amazon](https://console.aws.amazon.com/cloudfront/home).

1. No painel de navegação do console, expanda **Conteúdo privado** e clique em **Identidade do acesso de origem**.

1. Clique em **Criar identidade do acesso de origem**.

1. Clique em **Criar**.

1. Registre o ID de usuário canônico do Amazon S3 que é gerado quando você cria sua identidade de acesso de origem.

1. No painel de navegação, clique em **Distribuição**.

1. Clique em **Create Distribution**.

1. Selecione **Web** e clique em **Continuar**.

1. Em **Configurações de origem**, insira seu bucket de saída do Amazon S3 como o **nome do domínio de origem**.

1. No campo **ID de origem**, insira **S3-transcoder-sample-output**.

1. Em **Restringir acesso ao bucket**, escolha **Sim**.

1. Clique em **Criar distribuição** e registre o nome de domínio da distribuição.

#### Modificação da política do bucket do Amazon S3
<a name="java-s3-policy"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. Ao lado do bucket de saída, clique no **ícone da lupa** para exibir as propriedades do bucket.

1. Expanda **Permissões** e clique em **Adicionar política do bucket**.

1. **Insira a seguinte declaração de política, substituindo **CloudFront-oai-s3- por e s3- canonical-user-id** por**your recorded Amazon S3 canonical user ID**. output-bucket-name** **the name of your output bucket**

1. Clique em **Salvar**.

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

Vá para [Exemplos de Java](#java-sample).

### Configuração de seu ambiente Ruby
<a name="env-ruby"></a>

Esta seção mostra a configuração de seu ambiente Ruby.

**Topics**
+ [Configuração do AWS SDK para Ruby](#ruby-sdk)
+ [Criação de buckets de entrada e saída no Amazon S3](#ruby-s3)
+ [Criação de um tópico do Amazon SNS para receber notificações de status de trabalho](#ruby-sns)
+ [Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho](#ruby-sqs)
+ [Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS](#ruby-sqs-subscribe)
+ [Criação de um pipeline do Elastic Transcoder](#ruby-pipeline)
+ [Criação de uma CloudFront distribuição da Amazon para entregar conteúdo de forma escalável](#ruby-cloudfront)
+ [Modificação da política do bucket do Amazon S3](#ruby-s3-policy)

O código de exemplo parte de uma premissa importante:
+ Os exemplos são escritos para serem compatíveis com o Ruby versão 1.9.

#### Configuração do AWS SDK para Ruby
<a name="ruby-sdk"></a>

O AWS SDK para Ruby está disponível [aqui](https://aws.amazon.com/sdkforruby/). Você pode instalá-lo facilmente usando os gems Ruby com o seguinte comando: 

```
gem install aws-sdk
```

Para obter mais informações, consulte a [documentação do AWS SDK para Ruby](https://aws.amazon.com/documentation/sdkforruby/).

#### Criação de buckets de entrada e saída no Amazon S3
<a name="ruby-s3"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. No console, clique em **Criar bucket**.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de entrada.

1. Ainda no console do Amazon S3, clique em **Criar bucket** novamente.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de saída.

#### Criação de um tópico do Amazon SNS para receber notificações de status de trabalho
<a name="ruby-sns"></a>

1. Abra o console do [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No console, clique em **Criar e adicionar** e selecione **Criar novo tópico**.

1. No campo **Nome do tópico**, insira **ets-sample-topic** e clique em **Criar tópico**.

1. Registre o ARN do `ets-sample-topic`.

#### Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho
<a name="ruby-sqs"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, clique em **Criar nova fila**.

1. No campo **Nome da fila**, insira **ets-sample-queue** e clique em **Criar fila**.

1. Registre o URL da fila do Amazon SQS.

#### Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS
<a name="ruby-sqs-subscribe"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, selecione **ets-sample-queue**na lista de filas.

1. Em **Ações da fila**, selecione **Inscrever fila no tópico do Amazon SNS**.

1. Em **Escolher um tópico**, selecione **ets-sample-topic**e clique em **Inscrever-se**.

Você deve receber uma confirmação de que sua fila foi inscrita com sucesso em seu tópico.

#### Criação de um pipeline do Elastic Transcoder
<a name="ruby-pipeline"></a>

1. Abra o [console do Amazon Elastic Transcoder](https://console.aws.amazon.com/elastictranscoder/home).

1. No console, clique em **Criar novo pipeline**.

1. No campo **Nome do pipeline**, insira **ets-sample-pipeline**.

1. No campo **Bucket de entrada**, insira o nome do seu bucket de entrada.

1. Deixe o **perfil do IAM** como **Console Default Role**.

1. Em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, insira o nome do seu bucket de saída.

1. Ainda em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, selecione a **classe de armazenamento padrão**.

1. Expanda o menu suspenso **Notificações**.

1. Para todos os quatro tipos de eventos, selecione **Usar um tópico existente do SNS** e, em **Selecionar um tópico**, selecione**ets-sample-topic**.

1. Clique em **Criar pipeline**.

1. Registre o ID do pipeline do Elastic Transcoder.

#### Criação de uma CloudFront distribuição da Amazon para entregar conteúdo de forma escalável
<a name="ruby-cloudfront"></a>

1. Abra o [ CloudFront console da Amazon](https://console.aws.amazon.com/cloudfront/home).

1. No painel de navegação do console, expanda **Conteúdo privado** e clique em **Identidade do acesso de origem**.

1. Clique em **Criar identidade do acesso de origem**.

1. Clique em **Criar**.

1. Registre o ID de usuário canônico do Amazon S3 que é gerado quando você cria sua identidade de acesso de origem.

1. No painel de navegação, clique em **Distribuição**.

1. Clique em **Create Distribution**.

1. Selecione **Web** e clique em **Continuar**.

1. Em **Configurações de origem**, insira seu bucket de saída do Amazon S3 como o **nome do domínio de origem**.

1. No campo **ID de origem**, insira **S3-transcoder-sample-output**.

1. Em **Restringir acesso ao bucket**, escolha **Sim**.

1. Clique em **Criar distribuição** e registre o nome de domínio da distribuição.

#### Modificação da política do bucket do Amazon S3
<a name="ruby-s3-policy"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. Ao lado do bucket de saída, clique no **ícone da lupa** para exibir as propriedades do bucket.

1. Expanda **Permissões** e clique em **Adicionar política do bucket**.

1. **Insira a seguinte declaração de política, substituindo **CloudFront-oai-s3- por e s3- canonical-user-id** por**your recorded Amazon S3 canonical user ID**. output-bucket-name** **the name of your output bucket**

1. Clique em **Salvar**.

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

Vá para [Exemplos do Ruby](#ruby-sample).

### Configuração de seu ambiente PHP
<a name="env-php"></a>

Esta seção mostra a configuração de seu ambiente PHP.

**Topics**
+ [Instalação do código de exemplo](#php-install)
+ [Configuração do AWS SDK para PHP](#php-sdk)
+ [Criação de buckets de entrada e saída no Amazon S3](#php-s3)
+ [Criação de um tópico do Amazon SNS para receber notificações de status de trabalho](#php-sns)
+ [Inscrição do servidor no Amazon SNS](#php-sns-sub)
+ [Criação de um pipeline do Elastic Transcoder](#php-pipeline)
+ [Criando a CloudFront distribuição da Amazon para entregar conteúdo de forma escalável](#php-cloudfront)
+ [Modificação da política do bucket do Amazon S3](#php-s3-policy)

O código de exemplo parte de três premissas importantes:
+ Os exemplos de PHP são executados em um servidor Apache.
+ O servidor Apache deve ser capaz de aceitar entrada da Internet para receber notificações do Amazon SNS.
+ Os exemplos são escritos para funcionar com a versão PHP 5.4 ou posterior.

#### Instalação do código de exemplo
<a name="php-install"></a>

Para usar o código de exemplo PHP, primeiro você deve fazer download e instalá-lo. 
+ Faça download do código de exemplo:
  + [Código de exemplo HLS](samples/phphls.zip).
  + [Código de exemplo de notificação](samples/phpnotification.zip).
+ Descompacte o código de exemplo.
+ Coloque o código abaixo do seu servidor Apache. DocumentRoot
+ Remova o arquivo .zip do código de exemplo obtido por download. 
+ Atualize o caminho para a instalação do AWS SDK.

**nota**  
Em `HlsJobCreationSample.php` e em `JobStatusNotificationsSample.php`, você precisa atualizar o caminho para o seu `autoload.php`. Se você usar a instalação phar, poderá usar o caminho do arquivo `aws.phar` que você obteve por download, que inclui todas as dependências necessárias. 

#### Configuração do AWS SDK para PHP
<a name="php-sdk"></a>

O AWS SDK para PHP está disponível [aqui](https://aws.amazon.com/sdkforphp/). Para este tutorial, recomendamos a instalação phar; no entanto, projetos de longo prazo são mais bem gerenciados usando o Composer. 

Para obter mais informações, consulte a [documentação do AWS SDK para PHP](https://aws.amazon.com/documentation/sdkforphp/).

#### Criação de buckets de entrada e saída no Amazon S3
<a name="php-s3"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. No console, clique em **Criar bucket**.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de entrada.

1. Ainda no console do Amazon S3, clique em **Criar bucket** novamente.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de saída.

#### Criação de um tópico do Amazon SNS para receber notificações de status de trabalho
<a name="php-sns"></a>

1. Abra o console do [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No console, clique em **Criar e adicionar** e selecione **Criar novo tópico**.

1. No campo **Nome do tópico**, insira **ets-sample-topic** e clique em **Criar tópico**.

1. Registre o ARN do `ets-sample-topic`.

#### Inscrição do servidor no Amazon SNS
<a name="php-sns-sub"></a>

1. Verifique se o código de exemplo PHP foi instalado.

1. Abra o console do [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Em **AdditionalActions**, clique em **Criar assinatura**.

1. Selecione HTTP ou HTTPS conforme a configuração do seu servidor.

1. Em **Endpoint**, insira o endpoint do seu servidor. O caminho do endpoint deve apontar para `JobStatusNotificationsSampleNotificationHandler.php`. 

1. Clique em **Inscrever-se**. Isso envia uma solicitação de inscrição para o endpoint PHP.

O código de exemplo PHP gerencia automaticamente a solicitação de inscrição e a confirma. A solicitação de inscrição e a resposta são gravadas em `/tmp/subscribe_requests.txt`.

#### Criação de um pipeline do Elastic Transcoder
<a name="php-pipeline"></a>

1. Abra o [console do Amazon Elastic Transcoder](https://console.aws.amazon.com/elastictranscoder/home).

1. No console, clique em **Criar novo pipeline**.

1. No campo **Nome do pipeline**, insira **ets-sample-pipeline**.

1. No campo **Bucket de entrada**, insira o nome do seu bucket de entrada.

1. Deixe o **perfil do IAM** como **Console Default Role**.

1. Em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, insira o nome do seu bucket de saída.

1. Ainda em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, selecione a **classe de armazenamento padrão**.

1. Expanda o menu suspenso **Notificações**.

1. Para todos os quatro tipos de eventos, selecione **Usar um tópico existente do SNS** e, em **Selecionar um tópico**, selecione**ets-sample-topic**.

1. Clique em **Criar pipeline**.

1. Registre o ID do pipeline do Elastic Transcoder.

#### Criando a CloudFront distribuição da Amazon para entregar conteúdo de forma escalável
<a name="php-cloudfront"></a>

1. Abra o [ CloudFront console da Amazon](https://console.aws.amazon.com/cloudfront/home).

1. No painel de navegação do console, expanda **Conteúdo privado** e clique em **Identidade do acesso de origem**.

1. Clique em **Criar identidade do acesso de origem**.

1. Clique em **Criar**.

1. Registre o ID de usuário canônico do Amazon S3 que é gerado quando você cria sua identidade de acesso de origem.

1. No painel de navegação, clique em **Distribuição**.

1. Clique em **Create Distribution**.

1. Selecione **Web** e clique em **Continuar**.

1. Em **Configurações de origem**, insira seu bucket de saída do Amazon S3 como o **nome do domínio de origem**.

1. No campo **ID de origem**, insira **S3-transcoder-sample-output**.

1. Em **Restringir acesso ao bucket**, escolha **Sim**.

1. Clique em **Criar distribuição** e registre o nome de domínio da distribuição.

#### Modificação da política do bucket do Amazon S3
<a name="php-s3-policy"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. Ao lado do bucket de saída, clique no **ícone da lupa** para exibir as propriedades do bucket.

1. Expanda **Permissões** e clique em **Adicionar política do bucket**.

1. **Insira a seguinte declaração de política, substituindo **CloudFront-oai-s3- por e s3- canonical-user-id** por**your recorded Amazon S3 canonical user ID**. output-bucket-name** **the name of your output bucket**

1. Clique em **Salvar**.

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

Vá para [Exemplos de PHP](#php-sample).

### Configuração do ambiente Python
<a name="env-python"></a>

Esta seção mostra a configuração de seu ambiente Python.

**Topics**
+ [Configuração do AWS SDK para Python](#python-sdk)
+ [Criação de buckets de entrada e saída no Amazon S3](#python-s3)
+ [Criação de um tópico do Amazon SNS para receber notificações de status de trabalho](#python-sns)
+ [Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho](#python-sqs)
+ [Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS](#python-sqs-subscribe)
+ [Criação de um pipeline do Elastic Transcoder](#python-pipeline)
+ [Criando a CloudFront distribuição da Amazon para entregar conteúdo de forma escalável](#python-cloudfront)
+ [Modificação da política do bucket do Amazon S3](#python-s3-policy)

Ela parte de uma premissa importante:
+ Os exemplos são escritos para serem compatíveis com o Python versão 2.7.

#### Configuração do AWS SDK para Python
<a name="python-sdk"></a>

O AWS SDK para Python está disponível [aqui](https://aws.amazon.com/sdkforpython/). Você pode instalá-lo facilmente usando os gems PIP com o seguinte comando: 

```
pip-2.7 install boto
```

Para obter mais informações, consulte a [documentação do AWS SDK para Python](http://docs.pythonboto.org/en/latest/).

#### Criação de buckets de entrada e saída no Amazon S3
<a name="python-s3"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. No console, clique em **Criar bucket**.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de entrada.

1. Ainda no console do Amazon S3, clique em **Criar bucket** novamente.

1. No campo **Nome do bucket**, insira o nome desejado para seu bucket de saída.

#### Criação de um tópico do Amazon SNS para receber notificações de status de trabalho
<a name="python-sns"></a>

1. Abra o console do [Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No console, clique em **Criar e adicionar** e selecione **Criar novo tópico**.

1. No campo **Nome do tópico**, insira **ets-sample-topic** e clique em **Criar tópico**.

1. Registre o ARN do `ets-sample-topic`.

#### Criação de uma fila do Amazon SQS para pesquisar notificações de status de trabalho
<a name="python-sqs"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, clique em **Criar nova fila**.

1. No campo **Nome da fila**, insira **ets-sample-queue** e clique em **Criar fila**.

1. Registre o URL da fila do Amazon SQS.

#### Inscrever uma fila do Amazon SQS em seu tópico do Amazon SNS
<a name="python-sqs-subscribe"></a>

1. Abra o [console do Amazon SQS](https://console.aws.amazon.com/sqs/home).

1. No console, selecione **ets-sample-queue**na lista de filas.

1. Em **Ações da fila**, selecione **Inscrever fila no tópico do Amazon SNS**.

1. Em **Escolher um tópico**, selecione **ets-sample-topic**e clique em **Inscrever-se**.

Você deve receber uma confirmação de que sua fila foi inscrita com sucesso em seu tópico.

#### Criação de um pipeline do Elastic Transcoder
<a name="python-pipeline"></a>

1. Abra o [console do Amazon Elastic Transcoder](https://console.aws.amazon.com/elastictranscoder/home).

1. No console, clique em **Criar novo pipeline**.

1. No campo **Nome do pipeline**, insira **ets-sample-pipeline**.

1. No campo **Bucket de entrada**, insira o nome do seu bucket de entrada.

1. Deixe o **perfil do IAM** como **Console Default Role**.

1. Em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, insira o nome do seu bucket de saída.

1. Ainda em **Configurar bucket do Amazon S3 para arquivos e listas de reprodução transcodificados**, selecione a **classe de armazenamento padrão**.

1. Expanda o menu suspenso **Notificações**.

1. Para todos os quatro tipos de eventos, selecione **Usar um tópico existente do SNS** e, em **Selecionar um tópico**, selecione**ets-sample-topic**.

1. Clique em **Criar pipeline**.

1. Registre o ID do pipeline do Elastic Transcoder.

#### Criando a CloudFront distribuição da Amazon para entregar conteúdo de forma escalável
<a name="python-cloudfront"></a>

1. Abra o [ CloudFront console da Amazon](https://console.aws.amazon.com/cloudfront/home).

1. No painel de navegação do console, expanda **Conteúdo privado** e clique em **Identidade do acesso de origem**.

1. Clique em **Criar identidade do acesso de origem**.

1. Clique em **Criar**.

1. Registre o ID de usuário canônico do Amazon S3 que é gerado quando você cria sua identidade de acesso de origem.

1. No painel de navegação, clique em **Distribuição**.

1. Clique em **Create Distribution**.

1. Selecione **Web** e clique em **Continuar**.

1. Em **Configurações de origem**, insira seu bucket de saída do Amazon S3 como o **nome do domínio de origem**.

1. No campo **ID de origem**, insira **S3-transcoder-sample-output**.

1. Em **Restringir acesso ao bucket**, escolha **Sim**.

1. Clique em **Criar distribuição** e registre o nome de domínio da distribuição.

#### Modificação da política do bucket do Amazon S3
<a name="python-s3-policy"></a>

1. Abra o [console Amazon S3](https://console.aws.amazon.com/s3/home).

1. Ao lado do bucket de saída, clique no **ícone da lupa** para exibir as propriedades do bucket.

1. Expanda **Permissões** e clique em **Adicionar política do bucket**.

1. **Insira a seguinte declaração de política, substituindo **CloudFront-oai-s3- por e s3- canonical-user-id** por**your recorded Amazon S3 canonical user ID**. output-bucket-name** **the name of your output bucket**

1. Clique em **Salvar**.

```
{
  "Version":"2012-10-17",		 	 	 
  "Id":"PolicyForCloudFrontPrivateContent",
  "Statement":[{
     "Sid":" Granting CloudFront OAI access to private content",
     "Effect":"Allow",
     "Principal":{ "CanonicalUser":"<CloudFront-oai-s3-canonical-user-id>" },
     "Action":"s3:GetObject",
     "Resource":"arn:aws:s3:::<s3-output-bucket-name>/*"
   }]
}
```

Vá para [Exemplos do Python](#python-sample).

## Exemplos de Java
<a name="java-sample"></a>

Todos os exemplos de Java partem de duas premissas: 
+ Os exemplos são escritos para funcionar com a versão Java 1.6 ou posterior.
+ Os exemplos são executados usando o Eclipse com o kit de ferramentas da AWS para Eclipse.

### Exemplos de HLS
<a name="java-hls"></a>

**Topics**
+ [Download do exemplo de Java HLS](#java-hls-link)
+ [Trechos de código de exemplo](#java-hls-list)
+ [Tarefas](#java-hls-tasklist)

Esse exemplo demonstra como criar um trabalho HLS e um arquivo de lista de reprodução HLS que pode ser usado para reproduzir uma transmissão de taxa de bits adaptável.

#### Download do exemplo de Java HLS
<a name="java-hls-link"></a>

É possível fazer download do código de exemplo [aqui](samples/javasamples.zip). 

#### Trechos de código de exemplo
<a name="java-hls-list"></a>

O código de exemplo Java inclui: 
+ A classe `HlsJobCreationSample`

#### Tarefas
<a name="java-hls-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente Java](#env-java)

1. Faça download do código de exemplo.

1. No Eclipse, abra `com/amazonaws/services/elastictranscoder/samples/HlsJobCreationSample.java`.

1. Substitua PIPELINE\$1ID e INPUT\$1KEY pelos valores adequados.

1. Execute os exemplos no Eclipse.

### Exemplos de notificação
<a name="java-notifications"></a>

**Topics**
+ [Exemplo de sintaxe de notificação](#java-notification-example)
+ [Download do exemplo de notificação Java](#java-link)
+ [Trechos de código de exemplo](#java-list)
+ [Tarefas](#java-tasklist)

#### Exemplo de sintaxe de notificação
<a name="java-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Download do exemplo de notificação Java
<a name="java-link"></a>

É possível fazer download do código de exemplo [aqui](samples/javasamples.zip).

#### Trechos de código de exemplo
<a name="java-list"></a>

O código de exemplo Java inclui: 
+ A classe`Notification`: Para consumir notificações de Java, usamos a biblioteca Jackson JSON para desserializar as notificações de status do trabalho em. POJOs A classe `Notification` modela a mensagem que recebemos da fila do Amazon SQS.
+ A classe `JobStatusNotification`: a classe `JobStatusNotification` modela uma notificação do Elastic Transcoder.
+ A classe `SqsQueueNotificationWorker`: a classe `SqsQueueNotificationWorker` pode ser iniciada em um thread separado para realizar uma sondagem do Amazon SQS e lidar com as notificações de status de trabalho. Essa classe recebe mensagens, chama todos os handlers registrados para cada notificação recebida e exclui a mensagem da fila.
+ A interface `JobStatusNotificationHandler`: a interface `JobStatusNotificationHandler` pode ser implementada para permitir a manipulação personalizada de notificações. 
+ A classe `JobStatusNotificationsSample`: a classe `JobStatusNotificationsSample` cria um trabalho e aguarda até que ele seja concluído. Quando o trabalho entra em um estado terminal, o operador da fila é desligado e o aplicativo é encerrado.

#### Tarefas
<a name="java-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente Java](#env-java).

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo no diretório de origem do seu projeto JAVA.

1. No Eclipse, abra `com/amazonaws/services/elastictranscoder/samples/JobStatusNotificationsSample.java`.

1. Substitua PIPELINE\$1ID, SQS\$1QUEUE\$1URL e INPUT\$1KEY pelos valores adequados.

1. Execute o exemplo no Eclipse.

## Exemplos do Ruby
<a name="ruby-sample"></a>

Todos os exemplos do Ruby partem de uma premissa importante: 
+ Os exemplos são escritos para serem compatíveis com o Ruby versão 1.9.

### Exemplos de HLS
<a name="ruby-hls"></a>

**Topics**
+ [Download do exemplo de Ruby HLS](#ruby-hls-link)
+ [Trechos de código de exemplo](#ruby-hls-list)
+ [Tarefas](#ruby-hls-tasklist)

Esse exemplo demonstra como criar um trabalho HLS e um arquivo de lista de reprodução HLS que pode ser usado para reproduzir uma transmissão de taxa de bits adaptável.

#### Download do exemplo de Ruby HLS
<a name="ruby-hls-link"></a>

É possível fazer download do código de exemplo [aqui](samples/rubyhls.zip). 

#### Trechos de código de exemplo
<a name="ruby-hls-list"></a>

O código de exemplo Ruby inclui: 
+ O arquivo `HlsJobCreationSample.rb`

#### Tarefas
<a name="ruby-hls-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente Ruby](#env-ruby)

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo no diretório de origem do seu projeto Ruby.

1. Edite `HlsJobCreationSample.rb` e substitua pipeline\$1id e input\$1key pelos valores apropriados.

1. Em um terminal, navegue até o diretório onde você descompactou o código de exemplo e execute:

```
$ruby HlsJobCreationSample.rb
```

### Exemplos de notificação
<a name="ruby-notifications"></a>

**Topics**
+ [Exemplo de sintaxe de notificação](#ruby-notification-example)
+ [Download do exemplo de notificação Ruby](#ruby-link)
+ [Trechos de código de exemplo](#ruby-list)
+ [Tarefas](#ruby-tasklist)

#### Exemplo de sintaxe de notificação
<a name="ruby-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Download do exemplo de notificação Ruby
<a name="ruby-link"></a>

É possível fazer download do código de exemplo [aqui](samples/rubynotification.zip).

#### Trechos de código de exemplo
<a name="ruby-list"></a>

O código de exemplo Ruby inclui: 
+ A classe `SqsQueueNotificationWorker`: a classe `SqsQueueNotificationWorker` realiza uma sondagem de notificações no Amazon SQS, chama todos os manipuladores registrados para cada notificação e exclui a mensagem da fila. Observe que o operador é executado em um thread separado. Se a implementação do Ruby usada tiver threads "verdes", apenas um único thread é executado por vez (sem verdadeiro multiprocessamento).
+ O script `JobStatusNotificationsSample.rb`: esse script cria um trabalho do Elastic Transcoder inicia um operador do Amazon SQS e aguarda até que o trabalho seja concluído. O manipulador fornecido informa ao operador do Amazon SQS para parar quando o processamento do trabalho criado for concluído. O tratamento de notificações é feito chamando o método add\$1handlers e fornecendo um Proc ou um lambda como um handler que usa um único argumento. Para cada notificação recebida, todos os handlers registrados são chamado com a notificação fornecida como argumento de entrada para o handler.

#### Tarefas
<a name="ruby-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente Ruby](#env-ruby)

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo no diretório de origem do seu projeto Ruby.

1. Edite `JobStatusNotificationsSample.rb` e substitua pipeline\$1id, sqs\$1queue\$1url e input\$1key pelos valores apropriados.

1. Em um terminal, navegue até o diretório onde você descompactou o código de exemplo e execute: 

```
$ruby JobStatusNotificationsSample.rb
```

## Exemplos de PHP
<a name="php-sample"></a>

Todos os exemplos do PHP partem de três premissas importantes:
+ Os exemplos de PHP são executados em um servidor Apache.
+ O servidor Apache deve ser capaz de aceitar entrada da Internet para receber notificações do Amazon SNS.
+ Os exemplos são escritos para funcionar com a versão PHP 5.4 ou posterior.

### Exemplos de HLS
<a name="php-hls"></a>

**Topics**
+ [Download do exemplo de PHP HLS](#php-hls-link)
+ [Trechos de código de exemplo](#php-hls-list)
+ [Tarefas](#php-hls-tasklist)

Esse exemplo demonstra como criar um trabalho HLS e um arquivo de lista de reprodução HLS que pode ser usado para reproduzir uma transmissão de taxa de bits adaptável.

#### Download do exemplo de PHP HLS
<a name="php-hls-link"></a>

É possível fazer download do código de exemplo [aqui](samples/phphls.zip). 

#### Trechos de código de exemplo
<a name="php-hls-list"></a>

O código de exemplo PHP inclui: 
+ O arquivo `HlsJobCreationSample.php`

#### Tarefas
<a name="php-hls-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente PHP](#env-php)

1. Faça download do código de exemplo.

1. No seu navegador, carregue a página http://<your-endpoint>HlsJobCreationSample/transcoder-samples/ .php.

1. Preencha o ID do pipeline e a chave de entrada, e envie o formulário para criar um trabalho.

### Exemplos de notificação
<a name="php-notifications"></a>

**Topics**
+ [Exemplo de sintaxe de notificação](#php-notification-example)
+ [Download do exemplo de notificação PHP](#php-link)
+ [Trechos de código de exemplo](#php-list)
+ [Tarefas](#php-tasklist)

#### Exemplo de sintaxe de notificação
<a name="php-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Download do exemplo de notificação PHP
<a name="php-link"></a>

É possível fazer download do código de exemplo [aqui](samples/phpnotification.zip).

#### Trechos de código de exemplo
<a name="php-list"></a>

O código de exemplo PHP inclui:
+ <job-id>O arquivo`JobStatusNotificationsSampleNotificationHandler.php`: quando uma notificação é enviada POSTed ao seu servidor, o manipulador de notificações grava o status de volta em um arquivo em /tmp/.
+ O arquivo `JobStatusNotificationsSample.php`: assim que o handler da notificação grava o status em um arquivo em /tmp/<job-id>, `JobStatusNotificationsSample.php` grava o arquivo de status /tmp/<job-id> especificado pelo ID na string de consulta atribuído a ele.

#### Tarefas
<a name="php-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração de seu ambiente PHP](#env-php)

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo no diretório de origem do seu projeto PHP.

1. No seu navegador, carregue a página http://<your-endpoint>JobStatusNotificationsSample/transcoder-samples/ .php.

1. Preencha o ID do pipeline e a chave de entrada desejados para transcodificar, e pressione o botão **Create Job**.

## Exemplos do Python
<a name="python-sample"></a>

Todos os exemplos do Python partem de uma premissa importante: 
+ Os exemplos são escritos para serem compatíveis com o Python versão 2.7.

### Exemplos de HLS
<a name="python-hls"></a>

**Topics**
+ [Download do exemplo de Python HLS](#python-hls-link)
+ [Trechos de código de exemplo](#python-hls-list)
+ [Tarefas](#python-hls-tasklist)

Esse exemplo demonstra como criar um trabalho HLS e um arquivo de lista de reprodução HLS que pode ser usado para reproduzir uma transmissão de taxa de bits adaptável.

#### Download do exemplo de Python HLS
<a name="python-hls-link"></a>

É possível fazer download do código de exemplo [aqui](samples/pythonhls.zip). 

#### Trechos de código de exemplo
<a name="python-hls-list"></a>

O código de exemplo Python inclui: 
+ O arquivo `HlsJobCreationSample.py`

#### Tarefas
<a name="python-hls-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração do ambiente Python](#env-python)

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo.

1. Edite `HlsJobCreationSample.py` e substitua pipeline\$1id e input\$1key pelos valores apropriados.

1. Em um terminal, navegue até o diretório onde você descompactou o código de exemplo e execute:

```
$python HlsJobCreationSample.py
```

### Exemplos de notificação
<a name="python-notifications"></a>

**Topics**
+ [Exemplo de sintaxe de notificação](#python-notification-example)
+ [Download do exemplo de notificação Python](#python-link)
+ [Trechos de código de exemplo](#python-list)
+ [Tarefas](#python-tasklist)

#### Exemplo de sintaxe de notificação
<a name="python-notification-example"></a>

```
{
   "Type" : "Notification",
   "MessageId" : "341527b6-9081-5f3d-b933-6c8472c3be40",
   "TopicArn" : "arn:aws:sns:us-east-1:123456789012:ets-sample-topic",
   "Subject" : "Amazon Elastic Transcoder has scheduled job 1387847681009
      -abcdef for transcoding.",
   "Message" : "{\n  \"state\" : \"PROGRESSING\",\n
      \"version\" : \"2012-09-25\",\n  \"jobId\" : \"1387847681009-abcdef\",
      \n \"pipelineId\" : \"1387847629327-fedcba\",\n  \"input\" : {\n
      \"key\" : \"input/example/key.mp4\",\n \"frameRate\" : \"auto\",\n
      \"resolution\" : \"auto\",\n  \"aspectRatio\" : \"auto\",\n
      \"interlaced\" : \"auto\",\n  \"container\" : \"auto\"\n  },\n
      \"outputKeyPrefix\" : \"elastic-transcoder-samples/\",\n
      \"outputs\" : [ {\n \"id\" : \"1\",\n \"presetId\" :
      \"1351620000001-000020\",\n \"key\" : \"output/example/key.mp4\",\n
      \"thumbnailPattern\" : \"\",\n \"rotate\" : \"auto\",\n \"status\" :
      \"Progressing\"\n  } ]\n}",
   "Timestamp" : "2013-12-24T01:14:42.493Z",
   "SignatureVersion" : "1",
   "Signature" : "ElSqJW3ZksCPViYGTayI/p+LjdF2HB42iJlIJRJ+jWzWwygXdiJXvZXl94qhd/tLln1lxPqijjivb5RWu7n5yzdZwbod6lpLwyZ2TfWM6dZt57OzsG3GbdTxgqwVsztVSyWCYhcV8f+CrT3IQrfrU3Me/SRYVUqrSUXXsu4Ls7A2q9mosG7v0Sn+3Z1rAa9+Rf6QmkfAg05UX0sLyA+I2hFqTu5oAGDK4Cm6FHuIwV+oYJXNBbGWuS7tD6mRNwrYvPBlUvBLXx9m3CbqSXv5Yoj39vglv+1djtaLA3GpwX+B1hHx8QT373lgmmsmGDRWhSQretpOTWDYb81PV2K0bg==",
   "SigningCertURL" : "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-e372f8ca30337fdb084e8ac449342c77.pem",
   "UnsubscribeURL" : "https://sns.us-east-1.amazonaws.com/?Action=
      Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:ets-
      sample-topic:b3ec47e5-e1f0-401f-a0a5-98c7fe405c2b"
 }
```

#### Download do exemplo de notificação Python
<a name="python-link"></a>

É possível fazer download do código de exemplo [aqui](samples/pythonnotification.zip).

#### Trechos de código de exemplo
<a name="python-list"></a>

O código de exemplo Python inclui:
+ A classe `SqsQueueNotificationWorker.py`: a classe `SqsQueueNotificationWorker` realiza uma sondagem do Amazon SQS e lida com as notificações em um processo separado. Isso permite o verdadeiro multiprocessamento em Python. Essa classe recebe mensagens, chama todos os handlers registrados para cada notificação recebida e exclui a mensagem da fila. Essa classe também inclui a definição da classe `JobStatusNotificationHandler`, que é fornecida para oferecer uma estrutura para lidar com as notificações do Elastic Transcoder. Essa classe pode ser estendida e o método handle pode ser substituído para fornecer manipulação personalizada de trabalho. Observe que isso não está de acordo com os padrões do Python para duck typing (tipagem pato), mas oferece uma definição formal de handlers para os fins deste exemplo. 
+ O script `JobStatusNotificationSample.py`: o script `JobStatusNotificationSample.py` cria um trabalho no Elastic Transcoder e aguarda até que ele seja concluído. Quando o trabalho for concluído, ele interromperá o processo de sondagem da fila e será encerrado. A sincronização de vários processos usando o valor do objeto de multiprocessamento é necessária porque o handler é executado em um processo separado da fila que ele consulta.

#### Tarefas
<a name="python-tasklist"></a>

Para executar o exemplo, siga estas etapas:

1. Configure seu ambiente de acordo com estas instruções: [Configuração do ambiente Python](#env-python)

1. Faça download do código de exemplo.

1. Descompacte o código de exemplo em uma pasta local.

1. Edite `JobStatusNotificationsSample.py` e substitua pipeline\$1id, sqs\$1queue\$1url e input\$1key pelos valores apropriados.

1. Em um terminal, navegue até o diretório onde você descompactou o código de exemplo e execute: 

```
$python JobStatusNotificationsSample.py
```