Ir para o conteúdo
TubePress — gratuito, auto-hospedado & ativamente mantido
Mídia e transcodificação

Armazenamento e entrega de mídia

Armazenamento local, servidores de armazenamento externos (S3, FTP, WebDAV) e o proxy de mídia seguro.

O TubePress mantém cada vídeo enviado, suas rendições transcodificadas e seus ativos de pré-visualização no disco, e pode transferi-los de forma transparente para um ou mais servidores de armazenamento externos. Esta página explica onde os arquivos ficam, como o sistema de armazenamentos de mídia os distribui entre os backends, e como a mídia chega aos espectadores sem expor seus arquivos brutos.

O armazenamento é configurado em /admin/settings?tab=storage. Você pode operar inteiramente a partir do disco local, ou adicionar backends FTP, compatíveis com S3 e WebDAV e deixar o TubePress preenchê-los em sequência.

Como o TubePress armazena mídia

Os uploads ficam em public/uploads/. Cada vídeo tem sua própria pasta — o video_folder do vídeo — que contém o arquivo fonte original junto com cada rendição que o transcodificador produz e os pequenos ativos necessários ao player:

public/uploads/
  videos/
    a1b2c3d4.../        one folder per video (video_folder)
      video.mp4         original upload (source)
      video_1080p.mp4   processed source rendition
      video_720p.mp4    transcoded rendition
      video_480p.mp4    transcoded rendition
      timeline.vtt      scrub-preview sprite map
      preview.mp4       hover-preview clip
  thumbnails/           poster images
  watermark/            watermark PNG
  intros/               pre-roll / post-roll clips
  branding/             logo, favicon, background

O transcodificador descobre o arquivo fonte procurando o arquivo video_<height>p.mp4 de maior resolução, com fallback para um video.mp4, .webm ou .ogg bruto. As rendições de menor qualidade são escritas na mesma pasta, de modo que um único diretório contém tudo de que um vídeo precisa. Veja Transcodificação para saber como essas rendições são geradas.

O armazenamento local é uma área temporária quando um CDN é configurado. Com um armazenamento padrão externo, cada upload é processado localmente e então excluído do servidor de aplicação assim que estiver com segurança no backend — o diretório local videos/ contém apenas itens que ainda estão sendo enviados ou transcodificados.

Servidores de armazenamento externos

O sistema de armazenamentos de mídia permite registrar qualquer número de backends. Os novos vídeos sempre vão para o armazenamento padrão; quando um armazenamento ultrapassa seu limite de disco, o TubePress automaticamente redireciona os novos uploads para o próximo disponível. Os vídeos existentes continuam sendo servidos de onde foram gravados, pois cada vídeo registra seu próprio storage_id.

Quatro tipos de backend são suportados — nada além destes:

TipoUse paraCampos de conexão
LocalUm único servidor, ou para começarNenhum — servido de public/uploads
FTPVPS de armazenamento barato ou seedboxHost, porta (21), usuário, senha, caminho remoto, SSL/TLS, passivo
S3AWS S3, DigitalOcean Spaces, Backblaze, MinIOChave de acesso, segredo, bucket, região, endpoint, prefixo
WebDAVNextcloud e outros hosts WebDAVURL WebDAV, usuário, senha

Todo armazenamento remoto também possui algumas configurações operacionais:

URL de Mídia
O endereço HTTP público de onde os visitantes carregam os arquivos — não o endereço de controle FTP/S3.
Status
Ativo (recebe novos vídeos), Somente leitura (serve apenas arquivos existentes) ou Desabilitado (offline).
Uso máximo de disco
50–99% (padrão 90). Ao ser atingido, os novos uploads alternam automaticamente para o próximo armazenamento.
URLs seguras
Assina links de mídia com um token com prazo de expiração — veja Entrega segura de mídia abaixo.

Adicionando um backend de armazenamento

  1. Abra o editor de armazenamento. Acesse /admin/settings?tab=storage e clique em Add Storage.
  2. Escolha um tipo e dê um nome. Escolha Local, FTP, S3 ou WebDAV. O formulário muda para exibir apenas os campos necessários para aquele tipo.
  3. Insira a URL de mídia e as credenciais. Defina a URL de Mídia pública, depois o host/chaves/caminho para o backend. Deixe a senha em branco ao editar para manter a armazenada.
  4. Defina as opções operacionais. Escolha o status, o limite máximo de uso de disco e se deseja assinar as URLs.
  5. Teste e salve. Ao salvar, primeiro executa um teste de conexão (e uma verificação do script de monitoramento, se fornecido). Corrija qualquer verificação com falha, depois salve. Opcionalmente, marque-o como padrão para que os novos uploads sejam enviados para lá.
URL de Mídia vs. endereço de controle. A URL de Mídia é o que os navegadores buscam (por exemplo, https://cdn.example.com). Não é o endpoint FTP/S3 — confundir os dois é a causa mais comum de falha na reprodução após uma troca.

O monitor de armazenamento

Para backends remotos, o TubePress pode monitorar o espaço em disco e a saúde usando um pequeno script PHP que você instala no servidor de armazenamento. No painel Monitoramento de Disco do editor de armazenamento, clique em Baixar script de monitoramento (servido de /api/storage-monitor-download), faça o upload para seu servidor remoto e cole a URL pública de volta no campo URL do script de monitoramento.

Uma vez conectado, o editor mostra o uso de disco em tempo real e o horário da última verificação, e o limite de alternância automática usa essas leituras para saber quando um backend está cheio. O script é protegido por chave para que apenas o seu CMS possa consultá-lo.

Vale a pena fazer em cada servidor CDN. Sem o monitor, o TubePress não consegue ler o uso de disco remoto, portanto a alternância automática por uso máximo só pode agir nos armazenamentos que consegue medir.

Entrega segura de mídia

Quando as URLs seguras estão ativadas para um armazenamento, o TubePress nunca fornece um caminho de arquivo direto. Em vez disso, assina um link curto e com tempo limitado roteado através de /media/:

/media/{token}/{expires}/{path}
token
Um HMAC-SHA256 de 16 caracteres do caminho e da expiração, assinado com o segredo privado daquele armazenamento.
expires
Um timestamp Unix; após ser ultrapassado, o link retorna 403. A vida útil padrão é de seis horas.
path
O arquivo em uploads/videos/… que está sendo solicitado.

O token é recomputado e verificado no lado do servidor a cada requisição. Para um armazenamento local, o TubePress transmite o arquivo diretamente com suporte a HTTP range (para que o seeking funcione); para um armazenamento remoto, ele verifica o token e então emite um redirecionamento 302 para o arquivo no seu CDN. O vídeo bruto também tem limite de taxa na camada do servidor web: o editor de armazenamento gera um snippet nginx pronto para colar que limita o streaming após os primeiros megabytes, enquanto permite que os workers de transcodificação baixem em velocidade total com uma chave.

Os tokens estão vinculados ao caminho, à expiração e ao segredo. Rotacionar o segredo de um armazenamento invalida todos os links ativos, e links expirados param de funcionar automaticamente. Combine URLs seguras com o snippet de limite de taxa para uma barreira anti-scraping eficaz. Veja Segurança.

CDN & Cloudflare

O TubePress foi desenvolvido para funcionar confortavelmente atrás do Cloudflare. Dois aspectos são importantes:

  • Os uploads fragmentados contornam o limite de 100 MB. Os resultados de transcodificação são transmitidos de volta para o CMS em partes via /api/transcode-upload-chunk, portanto as requisições individuais permanecem abaixo do limite de 100 MB do plano gratuito do Cloudflare, independentemente do tamanho da rendição.
  • Ativos com cache longo e invalidação de cache. Os ativos estáticos são servidos com cabeçalhos de cache longos e imutáveis, invalidados por uma query de versão a cada lançamento, para que um proxy possa fazer cache agressivamente sem jamais servir um arquivo desatualizado.

O snippet nginx por armazenamento adiciona cabeçalhos expires sensatos para vídeo e o local interno opcional /media/ usado pela entrega local segura, para que você possa incluí-lo diretamente na configuração do seu site.

Próximos passos

Ainda com dúvidas?

Abra um ticket pelo painel e nossa equipe vai ajudá-lo.

Experimente o demo ao vivo → Baixar TubePress →