Youtube-Blob-urls funktionieren nicht im Browser aber in der src
Ich weiß, dass es keine blob-urls werden nur Objekte.
Machte ich meine eigenen blob-Objekt für den video-Puffer und dann habe ich es in ein src von video-tag, das ist so etwas wie blob://website.com/blablobbla . Ich öffnete diese url im browser funktionierte es
als ich öffnete die url des youtube-video-src (blob-url in einem neuen tab, es hat nicht funktioniert, aber mir video src blob (url) gearbeitet
Möchte ich wissen, wie kann ich das gleiche mit meinem blob-urls, so dass Sie nur die Arbeit in den src des html-video-tag und geben Fehler oder funktionieren nicht in der externen tab/Fenster des Browsers.Ich möchte nur wissen, die Technologie, die hinter dieser-und blob-Objekte und Ihre url-Eigenschaften.
- Und braucht man bei dieser Frage gleichen problem bin ich vor. habe versucht zu suchen, eine Menge, aber immer noch mit leeren Händen. 🙁
- Öffnen Sie ein youtube-video fügen Sie diesen code in der Konsole-Dokument.querySelector("video").src-jetzt kopieren Sie die " src " und fügen ihn in die browser-url-Abschnitt und drücken Sie die EINGABETASTE, es werde nicht funktionieren, erstellen Sie jetzt Ihre eigene website, in denen es einen blog, in dem src-video kopieren, in die url-Abschnitt und überraschen Ihre arbeiten wie Charme
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage scheint etwas vage zu mir, also hier ist, was ich interpretieren (auch aus dem code in der fiddle-Bilder, die in Ihrer Frage):
Blob
(Bild binäre Daten) durch einXMLHttpRequest()
GET
-Anfrage (responseType = 'blob'
)Blob URL
mitURL.createObjectURL()
imURL Store
fürXMLHttpRequest()
response
-Objekt (dieBlob
halten, werden die binären Daten)Blob URL
-string alssrc
für ein Bild (und fügen Sie das Bild in das Dokument, damit zeigt das Bild, das Sie gerade heruntergeladen haben)Blob URL
-string nehme ich an).In Ihre Kommentare, die Sie sagen:
Erscheint es mir, dass Sie nicht möchten, die der Benutzer zum anzeigen/laden der blob-wenn Sie kopieren Sie die
Blob URL
-string (durch untersuchen der live-Quelle oder einfachright-click-on-image>>Copy Imagelocation
) und fügen Sie es in einem neuen tab/Fenster (für die, die Sie geben, youtube als Beispiel).Aber Sie sind auch reden Videos.
TL;DR: Es scheint, Ihre Frage/bounty könnte die Vermischung der 2 verschiedene Arten von URL zurückgegeben
window.URL.createObjectURL();
:Blob-URL
Referenzierung (Objekte) "raw lokale Daten" (wie auch (Lokal-)Datei, Blob, etc.)Für diese, die Sie wollen, um automatisch (oder programmgesteuert) widerrufen die
Blob URL
des BrowsersURL Store
(die Sie könnte erwägen, eine vereinfachte lokalen webserver im browser, nur, dass der browser).var myBlobURL=Fenster.URL.createObjectURL(Objekt
, flag_oneTimeOnly);gibt ein re-usable
Blob URL
die kann widerrufen werden, mit:Fenster.URL.revokeObjectURL(myBlobURL)
(fügt dieBlob URL
string an dieRevocation List
).Hinweis: es verwendet werden, um eine zweite argument
flag_oneTimeOnly
die verwendet wird, zum Widerruf derBlob URL
wird automatisch nach der ersten Benutzung, aber das ist aktuell nicht mehr Teil der spec! Auch diese fahne oft nicht funktioniert trotzdem (zumindest in firefox).var myBlobURL=Fenster.URL.createFor(Objekt);
gibt eine
Blob URL
ist automatisch gesperrt, nachdem Sie nach der ersten Verwendung.Hinweis: einige Browser die 'spät' zu implementieren ist.
MediaSource-Objekt-URL
verweisen auf eine Besondere MediaSource-ObjektDiese URL ' s sind
src
einerHTMLMediaElement
(denke<audo>
&<video>
Elemente), um die BesondereMediaSource Object
Hinweis: einem neuen tab/Fenster ist nicht ein
HTMLMediaElement
Hinweis: obwohl Sie erstellt wurden, durch
window.URL.createObjectURL();
Hier ist passiert, was für die Geige, die in Ihrer Frage das Bild und ähnliche Codes, die heruntergeladen ein video als
Blob
(in dem Sie die heruntergeladene video-Datei/Binär auf den server mit einem xhr) oder andere "lokale" Daten:Sie sind im wesentlichen mit der 'nackten' 'un-enhanced' Datei-API.
Die
URL Store
nur beibehalten, während einer Sitzung (so wird es überleben, ein page-refresh, da es immer noch die gleiche session) und gehen verloren, wenn das Dokument entladen wird.Also, wenn Sie Ihre Geige ist noch offen, dann fiddle-Dokument (das Dokument, das erstellt, die
Blob URL
) ist offensichtlich nicht aber noch nicht geladen, und deshalb ist esBlob URL
s zur Verfügung stehen, der browser (jeder tab/Fenster), solange es nicht widerrufen!Dies ist ein relevanter Funktion: Sie bauen können/download/ändern
Blob
im browser, erstellen Sie eineBlob URL
und legen Sie es alshref
auf ein Datei-download-link (das kann der Benutzer mit der rechten Maustaste und öffnen in einem neuen tab/Fenster!!)Schließen Sie die fiddle, widerrufen oder die
Blob URL
von derURL Store
und dieBlob URL
ist nicht mehr erreichbar (auch nicht in einem anderen tab/Fenster).Versuchen Sie, sich selbst mit Ihrer modifizierten fiddle: https://jsfiddle.net/7cyoozwv/
In diesem fiddle-es sollte nun nicht mehr möglich sein, laden Sie Ihre Beispiel-Bild in einem anderen tab/Fenster, nachdem Sie kopiert die Bild-url (wenn das Bild angezeigt wird auf der Seite).
Hier habe ich widerrufen Sie den URL manuell (
revokeObjectURL()
), wie es derzeit der beste cross-browser-Methode (teilweise durch die api noch nicht vollständig stabilisiert wird).Beachten Sie auch: ein element ist
onload
Veranstaltung können Sie einen eleganten Ort, um jederzeit IhreBlob URL
.Hier ist, was geschieht, um eine
<audio>
oder<video>
Quelle verknüpft mit einerMediaSource Object
mit einemMediaSource object URL
zurückgegebenwindow.URL.createObjectURL(MediaSource)
:Die Media Source Extensions (MSE) auch verlängern die
File-API
'swindow.URL.createObjectURL()
zu akzeptierenMediaSource Object
. Die (derzeitigen Entwurf) URL-Objekt Erweiterung gibt an, dass:Beachten Sie, dass die aktuelle Spezifikation der
File API
'swindow.URL.createObjectURL()
nicht mehr hat eineautoRevoke
(oderflag_oneTimeOnly
) boolean flag zugänglich für den Programmierer, der sollte mitwindow.URL.createFor()
für diesen Zweck statt. Ich Frage mich, wenn die Media-Source-spec wird imitieren (und für die Abwärtskompatibilität alias IhrecreateObjectURL()
zu einem neuencreateFor()
extension (scheint besser geeignet als das ist, wie es zu sein scheint, sollte die Arbeit derzeit)).Diese resultierende automatisch widerrufen URL-Zeichenfolgen sind nur gedacht der link zu der
src
einerHTMLMediaElement
(denke<audo>
&<video>
Elemente), um die BesondereMediaSource Object
.ich glaube nicht, dass eine leere
Document
(aus einem neuen tab/Fenster) ist eine<audo>
oder<video>
element.Vielleicht "Ein schnelles tutorial auf MSE"(Quelle: MSDN) könnte helfen, klären den Unterschied und Grundlagen:
Du (oder ein big-time-player wie youtube, der dynamisch auszuwählen, unterstützende Technologien für die Wiedergabe auf der client-Plattform (es gibt also keinen Weg, zu sagen, für sicher, welche Art von youtube-video-URL die Sie sprechen)) könnte werden mit der neuen special
MediaSource Object
zur Wiedergabe von video (oder audio).Dies fügt Puffer-basierte Quelle-Optionen, um HTML5-video für streaming-Unterstützung (im Gegensatz zum herunterladen von einer kompletten video-Datei vor der Wiedergabe, oder verwenden Sie ein add-on wie Silverlight oder Adobe Flash zum streamen von Medien).
Hoffe dies ist was Sie nach!
Tatsächlich, die URL, die Sie sich beziehen, ist nur ein
"string"
Verweis auf dieBLOB
selbst (die erstellt wird, mithilfe der Funktionwindow.URL.createObjectURL
), So dass Sie können es verwenden, wie eine normale URL. Und der Umfang ist auch nur bis das Dokument entladen wird.So, ich glaube nicht, dass es möglich ist, für Sie zu öffnen, die URL nur mit dem browser. Auch habe ich versucht, neu zu erstellen, was du sagst, aber ohne Erfolg (in meiner eigenen website, erstellen einer blob, und setzen Sie die URL in browser).
Unten ist der code
Geige hier
Update :
Ok, nachdem ich sah Sie an. scheint wie youtube ist mit Medien-Quelle das video zu streamen.
Habe ich nicht aktualisiert, die Geige (nicht ein video gefunden, das ich verwenden kann). Aber, im Grunde, Er immer noch mit der gleichen Funktion (
createObjectURL
) zu erstellen, die blob-URL. Aber anstatt sich mit den source (Bild, video, etc) zur übergabe an die Funktion. Sie sollte passieren dieMediaSource
- Objekt in der Funktion.Dann, Sie verwenden die blob-URL und übergeben es in die
video.src
. Daher, wenn Sie versuchen, öffnen Sie die blob-link. Sollten Sie nicht in der Lage sein zu sehen, das video wieder.imageUrl
in einer anderen Registerkarte, und Sie werden sehen 😉 (aber offensichtlich nicht mit htaccess zu tun)