Ich arbeite gerade an einem Webprojekt mit NodeJS, das Video-Upload und Player hat. Das Video hochgeladen wird in mongodb in binärer Form gespeichert werden, und wenn retrive es über API localhost/api/media /: id:Safari 9 kann HTML5-Video mit Binärquelle nicht wiedergeben?
/*getting media from db in binary format*/
res.setHeader('Accept-Ranges', 'bytes');
res.setHeader('Content-Range', 'bytes=0-1/' + media.length);
res.setHeader('Content-Type', 'video/mp4');
res.setHeader('Cache-Control', 'public,max-age=0');
res.send(media);
Diese funktionieren auf Chrome und Firefox, diese API gibt mir ein html5 Seite mit Video-Tag, das wie folgt aussehen:
<video controls="" autoplay="" name="media">
<source src="localhost/api/media/abcde" type="video/mp4">
</video>
die wie 7. auf ältere Safari fein sogar laufen aber auf Safari 9 insbesondere arbeitet es nicht und wird nur mit dem Text „Laden“, um die Mediensteuerung zeigen und kann Spiele niemals das Video. Ich versuche, die gleiche Videodatei in localhost zu legen und über localhost/test.mp4 darauf zuzugreifen, und das läuft in Safari 9 gut, so dass es kein Problem mit der Kodierung des Videos gibt. Irgendeine Idee, wie mache ich dieses eine Arbeit?
Ihre 'Inhalt-Range' Antwort-Header sagen, dass Sie nur mit den ersten beiden Bytes antworten gehen von die Datei, aber dann schickst du die ganze Sache. Warum setzen Sie die Antwort-Header "Content-Range"? – idbehold
Zuerst habe ich nichts anderes als Content-Type, und es funktioniert nicht, also habe ich das gelesen: http://stackoverflow.com/questions/32996396/safari-9-0-can-not-play-mp4- video-on-the-storage-server Und es hieß, dass Safari Browser nur nach den ersten 2 Bytes gefragt habe, also versuche ich zuerst mit Range = bytes = 0-1, und wenn es nicht funktioniert, habe ich es mit Content-Range versucht, nicht dass es anders wäre. Ich versuche auch mit "0-" + media.length + "/" + media.length, um die ganze Sache anzufordern, und es funktioniert auch nicht für mich. – Megazero
Verwenden Sie GridFS? – idbehold