Omettendo l'intestazione Content-Length si interrompe la riproduzione video in alcuni browser

Problema

I video caricati su AEM Assets vengono riprodotti correttamente nel browser Apple Safari tramite istanze di pubblicazione, ma non tramite dispatcher.  Una volta che il file è completamente scaricato, si riproduce, ma non si riproduce durante il download.

Causa

Molte cose possono interrompere la riproduzione video tramite dispatcher.  Tuttavia, le cause più comuni sono le intestazioni HTTP Content-Length, Content-Type o Accept-Ranges sbagliate o mancanti.

Risoluzione

Le intestazioni di risposta HTTP per un video possono essere controllate usando cURL per scaricare il video:

curl -v http://host/content/dam/test.mp4

L'output completo del comando può essere visualizzato di seguito:

$ curl -v http://host/content/dam/test.mp4
...
> GET /content/dam/test.mp4 HTTP/1.1
> User-Agent: curl/7.37.1
> Host: host
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Mon, 09 Jan 2017 20:27:50 GMT
* Server Apache is not blacklisted
< Server: Apache
< Last-Modified: Wed, 23 Nov 2016 23:22:56 GMT
< ETag: "17c0313-81a7de-542002b36d400"
< Accept-Ranges: bytes
< Content-Length: 8497118
< Content-Type: video/mp4

Convalidare che le intestazioni Accept-Ranges e Content-Length siano presenti e che il tipo MIME sia corretto. 

Se manca l'intestazione Content-Length:

Se stai utilizzando il server Web Apache e manca l'intestazione Content-Length, è probabile che ciò sia dovuto ad una cattiva configurazione Server Side Include.  Quando SSI è abilitato su un file, Apache omette l'intestazione Content-Length.

Cerca tra i tuoi file Apache .conf "INCLUDES", potresti trovare una configurazione errata come questa: 

SetOutputFilter INCLUDES;DEFLATE

Se è impostato, allora abilita SSI su tutti i file.  Invece, SSI dovrebbe essere abilitato per tipo di file, in questo modo: 

AddOutputFilter INCLUDES;DEFLATE html

Se manca l'intestazione Accept-Ranges:

Rivedere le configurazioni del server web, poiché la maggior parte dei moderni server web ha l'opzione di intervallo abilitata per impostazione predefinita.

Se stai usando Apache, cerca questo nei file .conf: 

Accept-Ranges none

Se l'intestazione Content-Type è sbagliata:

Se il tipo MIME non è corretto, è necessario aggiornare la configurazione del server web, fare riferimento alla documentazione del server web in cui è installato dispatcher.

Ecco un piccolo elenco non esaustivo di tipi MIME video: 

Tipo

Estensione file

Tipo MIME

Flash

flv

video/x-flv

MPEG-4

mp4

video/mp4

indice iPhone

m3u8

application/x-mpegURL

segmento iPhone

ts

video/MP2T

3GP Mobile

3gp

video/3gpp

QuickTime

mov

video/quicktime

Windows Media

wmv

video/x-ms-wmv

A/V Interleave

avi

video/x-msvideo

Logo Adobe

Accedi al tuo account