Estamos vendo um problema na 3.6.0.beta3-latest onde usuários de iPhone e Safari no macOS recebem um spinner infinito ao tentar reproduzir um vídeo .mp4 (H.264) enviado. Esses mesmos vídeos funcionavam bem até recentemente (não tenho certeza qual foi a última versão do Discourse em que eles funcionaram).
Parece que o Safari faz um GET para buscar os primeiros bytes (Range: bytes=0-1) do vídeo (ex: /uploads/default/original/1X/44395933ccadf546b1b1ce65b742e24f900b33fa.mp4), que retorna 200, mas falha por motivos que não são mostrados no console JS ou no inspetor de rede (apenas destacados em vermelho, sem mensagens de erro). Se o mesmo URL for colado diretamente no navegador, eles conseguem baixar o vídeo completo e reproduzi-lo com sucesso.
Firefox e Chrome no macOS não têm problemas para reproduzir os vídeos. Navegadores no Android também não parecem ter problemas.
Os vídeos são pequenos (na faixa de 10MB). Não estamos usando S3 para uploads.
Alguém mais pode corroborar, ou confirmar que não está tendo problemas com iPhones/Safari reproduzindo vídeos? E há algum outro diagnóstico que eu possa fazer que possa lançar luz sobre o problema?
Estou enfrentando um problema semelhante com meu fórum, mas testar os mesmos arquivos aqui parece funcionar bem. Apenas usuários de iOS/Safari são afetados. Alguns vídeos no contêiner WEBM funcionam, mas a maioria dos mp4, mov, etc., não.
Olá, tenho visto problemas recentemente e comentei em um tópico iniciado por @tsk que foi deslistado. Eu estava trabalhando sob a suposição de que o problema era com vídeos codificados em mp4/av1, pois vídeos webm/vp9 estavam sendo reproduzidos em nosso fórum, mas parece que o problema é mais do que isso para usuários do Safari.
Só para rir, verifiquei se estou na versão mais recente, embora não tenha visto nada nos commits que indicasse que isso afeta os usuários da Apple.
Minha configuração está usando armazenamento local para uploads. A maioria dos tópicos está bloqueada por nível de confiança, mas estamos testando em uma categoria pública aqui:
Este vídeo é H.264 em MP4, ele deve rodar em todos os navegadores que executam o Discourse. Dado que ele roda aqui e não na sua instância, suspeito que algo esteja mal configurado lá.
Você executa algum proxy reverso adicional sobre o Discourse? Eu vi alguns cabeçalhos nesta instância que não existem em instalações padrão, então estou curioso sobre o que foi feito lá.
Eu considerei que isso poderia ser parcialmente responsável, mas a configuração não mudou e este é um novo problema a partir da versão 3.6.0-beta2, pelo que pude apurar. Comecei a receber reclamações de usuários da Apple após a reconstrução. Semelhante a @mandyk, eu não me lembro em qual versão estávamos anteriormente.
Existe alguma configuração específica no Discourse que eu deva avaliar?
Infelizmente, não podemos cobrir realisticamente todas as infinitas possibilidades de configurações quando as pessoas adicionam coisas sobre o Discourse, e é por isso que enviamos com uma configuração conhecida e boa na instalação padrão que vem com um proxy reverso configurado para o Discourse.
Pode faltar uma única diretiva de configuração do nginx, mas você precisará pesquisar sobre isso.
Também confirmo que o vídeo postado neste tópico funciona bem no Safari.
Não tenho certeza se isso é relevante, mas uma diferença que consigo notar é que o vídeo neste tópico está sendo servido do S3. Quando o Safari faz a primeira solicitação de intervalo, o S3 responde com HTTP 206, o que parece correto. Tanto a instância do Pixelspace quanto a minha instância não estão usando S3, e parece que o Discourse está respondendo com HTTP 200 (o que não parece correto, porque a solicitação inclui um cabeçalho Range: bytes=0-1).
Confirmado que o vídeo em discourse-on-a-pi5.falco.devnão está funcionando para mim no Safari. Novamente, posso ver que a solicitação de vídeo está retornando 200 em vez de 206.
Editar: Além disso, parece que a resposta está tentando retornar o vídeo inteiro, embora Range: bytes=0-1 tenha sido especificado. Suspeito que as solicitações de intervalo estão sendo ignoradas, e o Safari parece ser sensível a isso.
Editar adicional: Isso provavelmente significa que a busca eficiente em vídeos maiores está quebrada para navegadores além do Safari também, pois eles precisam baixar o vídeo inteiro antes de poderem buscar.
Então, só para dar mais risadas, copiei meu app.yml para app2.yml, mudei a URL e alguns diretórios, e agora temos o testfor.pixelspace.xyz rodando a branch estável.