# CLI Packager: comandos e recuperação

Empacote um vídeo mestre, automatize com protegido credenciais, interprete o progresso e retome um upload interrompido sem recodificação.

O vídeo criptografado e as licenças DRM seguem caminhos diferentes

A CDN entrega o vídeo criptografado. Seu backend verifica o acesso, e o serviço de licenças DRM autoriza a descriptografia em um dispositivo compatível.

- 01**Armazenamento / CDN**

Entrega a mídia criptografada ao player.

- 02**Seu backend**

Verifica se o espectador pode assistir e solicita a autorização de reprodução ao DRM-X.

- 03**DRM-X**

Valida a autorização de reprodução e processa a solicitação de licença DRM.

- 04**Player + dispositivo**

Usa o sistema DRM do dispositivo para obter uma licença e reproduzir a mídia criptografada.

Sua infraestrutura decide o acesso; DRM-X aplica a política assinada. Mídia criptografada e licenças DRM seguem caminhos de entrega separados.

## Abrir o CLI [ # ](#open-the-included-cli)

Baixe e extraia o pacote completo Windows Suíte de [Conteúdo de pacote](https://6.drm-x.com/console/package-content). Abra PowerShell na pasta extraída. Os comandos abaixo assumem que os binários FFmpeg, FFprobe e Shaka fornecidos estão ao lado de `drmx-packager.exe`.

```
.\drmx-packager.exe version
.\drmx-packager.exe help
.\drmx-packager.exe credentials list
.\drmx-packager.exe credentials test --profile "Production"
```

Primeiro crie o perfil **Production** em [Desktop Packager](https://docs.drm-x.com/pt/packaging/desktop), ou substitua esse nome por seu próprio perfil salvo. Use preview.6 ou mais recente para a autorização de carregamento longo renovável.



## Pacote com um mestre de 1080p[# ](#package-a-1080p-master)

Substitua o caminho de origem, Content ID e o caminho de saída abaixo. A pasta de saída deve ser nova ou vazia. O PowerShell usa um backtick no final de uma linha contínua; não adicione espaços após ele.

```
.\drmx-packager.exe package `
  --profile "Production" `
  --content_id "training-2026-001" `
  --content_title "Training session" `
  --input_source "D:\Sources\training.mp4" `
  --encoding_ladder "sd,hd,full-hd" `
  --video_codec h264 --encoding_preset fast `
  --rate_control smart-quality-vbr --max_frame_rate 24 `
  --audio_bitrate_kbps 128 --segment_duration 6 `
  --packaging_profile maximum-compatibility `
  --key_protection shaka-standard --encrypt_audio `
  --drm_systems "widevine,fairplay,playready,wiseplay" `
  --ffmpeg ".\ffmpeg.exe" --ffprobe ".\ffprobe.exe" `
  --shaka ".\packager-win-x64.exe" `
  --upload-concurrency 8 `
  -o "D:\Protected\training-2026-001"
```

Isto analisa o código- fonte, codifica a escada seleccionada uma vez, criptografa as saídas configuradas, verifica os manifestos, remove as rendições claras temporárias e envia o pacote protegido. Uma fonte menor do que uma runa pedida não é melhorada. Para UHD, veja [4K, 8K e vídeos longos](https://docs.drm-x.com/pt/packaging/large-videos).

Para manter a saída protegida localmente, adicione `--no-upload`. Para usar um destino próprio do cliente verificado, adicione `--storage_connection_id "YOUR-STORAGE-CONNECTION-ID"`. Seu padrão configurado é usado quando esta opção é omitida.



## Compreender o progresso e a conclusão[#](#understand-progress-and-completion)

Analisar
Ler as faixas de origemCodificar
Criar a escadaEncriptar
Proteger cada saídaVerificar
Verificar os manifestosEnviar
Transferir e publicar

A successful upload reports the verified object count, total bytes, inventory SHA-256 and registered manifest URLs. The last stage includes server verification of object sizes, manifest paths and package KIDs. Keep the Packaging Session ID from the output: it identifies the same package during recovery.

A área de trabalho consome o progresso estruturado CLI. Para a sua própria integração, adicione `--progress-format ndjson` e analise um JSON objeto por linha; campos opcionais como `percent` podem ser nulos. Trate um código de saída de processo não nulo como falha ou cancelamento, mesmo se as fases anteriores completarem.



## Continuar sem recodificação[#](#resume-without-re-encoding)

Use `upload` após terminar a encriptação local, incluindo depois de reiniciar o computador ou após expirar o Token de Acesso ao Pacote original. O seu perfil salvo deverá pertencer ao mesmo Site ID que o pacote concluído. Substitua a sessão de exemplo UUID e a pasta pelos valores do seu log.

```
.\drmx-packager.exe upload `
  --profile "Production" `
  --session "11111111-2222-4333-8444-555555555555" `
  --input "D:\Protected\training-2026-001" `
  --upload-concurrency 4
```

**Mantenha todo o root de saída**, incluindo ambas as pastas de formato de criptografia quando a Compatibilidade Máxima criou duas saídas. Para 1AICLOUD, o CLI compara comprimentos de bytes remotos e SHA-256 metadados, salta objetos correspondentes e continua o trabalho incompleto. Um objeto multiparte incompleto reinicia esse objeto; os objetos já concluídos permanecem reutilizáveis. O armazenamento pré- assinado do cliente pode retransmitir objetos em um currículo manual.

O upload recua após o estrangulamento ou erros temporários de rede e renova temporariamente 1AICLOUD credenciais enquanto mantém o mesmo prefixo de destino e pacote. As partes de grandes objetos falhadas são novamente testadas de forma independente. Comece com objetos paralelos 4–8; a maior concorrência nem sempre é mais rápida. Pare outro processo de envio da mesma pasta antes de retomar.

```
.\drmx-packager.exe upload `
  --session "11111111-2222-4333-8444-555555555555" `
  --input "D:\Protected\training-2026-001" --dry-run
```

Esta execução seca lê apenas as contagens e tamanhos de ficheiros locais; não contacta o armazenamento, prova a autorização do servidor ou valida a encriptação. A sessão UUID deve ainda ser sintáticamente válida. Os fluxos de trabalho baseados em sessão legados podem usar um `DRMX_PACKAGING_TOKEN` válido; a recuperação do perfil salvo é mais simples quando esse token tiver expirado.



## Automatizar com ambiente protegido credenciais [# ](#automate-with-protected-environment-credentials)

As tarefas não atendidas podem fornecer `DRMX_PACKAGER_SITE_ID`, `DRMX_PACKAGER_ACCESS_KEY` e `DRMX_PACKAGER_KMS_TOKEN` através da sua loja secreta. Opcionalmente, defina `DRMX_PACKAGER_SERVER`. Omitir `--profile` neste modo. Não escreva o real credenciais em scripts, controlo de código, argumentos de comandos ou logs.

Execute um comando de pacote por código e atribua um destino único Content ID e vazio de cada vez. Verifique o código de saída antes de continuar. Use `upload` para um pacote concluído que falhou durante o envio, em vez de repetir automaticamente `package`. Windows usa os executáveis empacotados mostrados acima. Numa instalação aprovada do Linux CLI, use `./drmx-packager`, `./ffmpeg`, `./ffprobe` e `./packager-linux-x64`, com as continuações de linha apropriadas do shell.



## Resolução de problemas [# ](#troubleshooting)

| Mensagem ou sintoma | Próxima ação | 
| --- | --- |

| Enviar temporariamente ocupado ou interrompido | Permitir backoff para terminar. Se o orçamento de repetição está esgotado, manter a saída e retomar com concorrência 4 ou 2. | 

| 401 / validação credencial falhou | Teste o perfil salvo, verifique o Site ID e gire/re-salve revogado credenciais. Um visualizador DRM License Token não pode autorizar a embalagem. | 

| O resultado deve estar vazio | Use uma nova pasta para codificação; use o upload para recuperar um pacote protegido já concluído. | 

| Outro envio pode estar usando esta pasta protegida | Feche o outro processo de upload. O arquivo de bloqueio adjacente pode permanecer após a saída; apenas um arquivo ativo bloqueio bloqueia a recuperação. | 

| O comprimento, a soma de verificação ou a verificação do manifesto falharam | Preservar o registo e a saída. Não editar os manifestos ou publicar manualmente. Continuar os ficheiros inalterados ou o suporte de contacto com a sessão ID e o erro redigido. | 

| UHD degrau removido | As dimensões de origem são muito pequenas para esse degrau. Use uma fonte UHD real para produzir a saída UHD. |

<!-- Canonical: https://docs.drm-x.com/pt/packaging/cli -->
<!-- Language: pt -->
