2017-11-10 5 views
1

Ich arbeite an Videoplayer mit Media Source Extensions API. Für die Implementierung der Seek-Funktionalität mache ich folgendes:MSE Safari 11 Segmente nicht an SourceBuffer anhängen Nach dem Abbrechen von SourceBuffer

Verwenden Sie zuerst die abort() - Methode von SourceBuffer, um das aktuelle Segment abzubrechen, und setzt den Segment-Parser zurück. dann neues Segment für currentTime und danach neues Segment herunterladen und an SourceBuffer anhängen.

if (mediaSource.readyState == "open") { 
    mediaSource.sourceBuffers[0].abort(); 
} 
var nextSegment = getCurrentSegment(vide.currentTime) 
appendToBuffer(nextSegment) 

alles funktioniert in Chrome und Firefox, aber in Safari gut, wenn Video es nicht mehr funktioniert und stecken sucht (wegen der nicht das neue Segment zu SourceBuffer hinzufügen).

Nach einigen Recherchen fand ich heraus, dass es ein safari MSE bug seit Version 9 ist!

Ich möchte wissen, gibt es eine Problemumgehung für dieses Problem?

Antwort

0

Es scheint die einzige Problemumgehung zu sein ist eine leere abort() -Funktion auszudrücken, genauso wie google shaka player.

https://github.com/google/shaka-player/blob/d90821a1a5830cdf09caa9707a99c945979ffd0e/lib/polyfill/mediasource.js#L117

var addSourceBuffer = MediaSource.prototype.addSourceBuffer; 
    MediaSource.prototype.addSourceBuffer = function() { 
    var sourceBuffer = addSourceBuffer.apply(this, arguments); 
    sourceBuffer.abort = function() {}; // Stub out for buggy implementations. 
    return sourceBuffer; 
    }; 
Verwandte Themen