2015-10-07 36 views
5

Il seguente collegamento video non può essere riprodotto con Safari 9.0 (versione più recente). Ma le versioni precedenti di Safari, Chrome e Firefox possono essere riprodotte.Safari 9.0 non può riprodurre video mp4 sul server di archiviazione

http://assets00.grou.ps/0F2E3C/wysiwyg_files/Videos/saksuka/20150928104628-lhmkkfbhnkiisbhht.mp4

posso giocare con Safari 9.0 Quando scarico il video dal server al mio computer.

Ecco perché non penso che questo problema provochi la codifica video.

Ho eseguito queste impostazioni;

+0

Ho lo stesso problema quando si serve un piccolo video tramite S3 e Cloudflare. Funziona bene su un server che risponde con le intestazioni streaming in modo che il problema non sia la codifica video. –

risposta

5

Questo sembra essere un problema ricorrente con alcuni file mp4 su Safari.

Ho testato il tuo video su un server statico node.js localhost e ha funzionato bene in Safari, il che significa che il video stesso dovrebbe andare bene.

Se guardi il web inspector in Safari vedrai che la richiesta web non include alcune intestazioni. Ciò causa alcuni problemi con i server e non rispondono nel modo in cui Safari si aspetta o non rispondono affatto.

È possibile visualizzare problemi simili in fase di discussione (il secondo non è il tuo caso, ma penso che le informazioni incluse nella richiesta inviata al server possano far decidere al server di non rispondere come desiderato):

Aggiornamento:

Utilizzando wireshark per acquisire la richiesta da Chrome, è possibile visualizzare una risposta dal server con il video da riprodurre mentre la richiesta da Safari (sulla stessa macchina) non ha dato alcuna risposta dal server.

Le richieste sono generalmente simili e entrambe includono l'intestazione del referrer. Il browser Safari chiede solo per i primi 2 byte da restituire dal server inizialmente - lo fa utilizzando l'intestazione 'gamma', che viene utilizzato per specificare le byte Intervallo che un file restituisce:

  • Gamma : byte = 0-1 \ r \ n

Chrome d'altra parte richiede l'intero video nella sua richiesta di gamma:

  • gamma: byte = 0- \ r \ n

Tuttavia, utilizzando uno strumento HTTP (ad es. Postman) su Chrome e la modifica dell'intervallo a 0-1 non sembra impedire al server di rispondere nel caso Chrome. Infatti, usando lo strumento per impostare, per quanto possibile, tutte le stesse intestazioni dei set di Safari sembra ancora restituire il video ok.

+0

Potrebbe chiarire un po 'quale sia la soluzione?Sembra che questa risposta non fornisca una soluzione e invece ci indirizza verso altre domande SO. – rinogo

+1

@rinogo Questo è un commento equo - la risposta è un po 'come un registro delle indagini, devo ammettere. Il link del video originale non funziona, quindi non posso testare di nuovo ora, ma se hai un esempio che non funziona mandalo e come vorrei guardare con l'ultima versione di Safari. È possibile che il file server riconoscesse il tipo di browser e cambiasse la sua risposta in base a questo, ma è difficile dirlo con certezza. Ciò che era certo era che il video veniva riprodotto bene localmente e che il server rispondeva in modo diverso ai diversi browser che effettuavano la richiesta . – Mick

+0

Questo è stato molto utile per me. Non avrei mai immaginato che Safari fallisse quando il server non poteva rispondere alle richieste di intervallo. – danneu