J Trana
J Trana

Reputation: 2210

Is there a way to append to an object URL or otherwise create a stream as a URL?

There was an interesting discussion over here on StackOverflow, and in some ways this question is a followup. I've also asked a similar question in the past, but I feel this is more generally a question about object URLs.

There have been a number of times where I would like to implement a streaming version of a ".src" for image or video elements in JS, perhaps from a stream of bytes. Unfortunately, I only see two main options that are more controllable by JS:

  1. Create a Blob and then use URL.createObjectURL(). Unfortunately, this seems to be static - but perhaps there is a way to mutate the contents?
  2. Create a MediaSource. However, this only works for video and is much pickier than just using a video element, which is really the level of support I need.

Any thoughts on how I can create some type of streaming object URL? And/or if not, does anybody know why JS hasn't implemented this type of streaming long, long ago?

Upvotes: 2

Views: 1133

Answers (1)

Brad
Brad

Reputation: 163438

There have been a number of times where I would like to implement a streaming version of a ".src" for image or video elements in JS, perhaps from a stream of bytes.

Use a Service Worker to respond with a Response with a ReadableStream as the body.

but I feel this is more generally a question about object URLs.

Object URLs really only represent immutable Blobs. The MediaStream object URL is a special case, not really applicable here, and a deprecated API as srcObject exists for media elements these days.

Create a Blob and then use URL.createObjectURL(). Unfortunately, this seems to be static - but perhaps there is a way to mutate the contents?

No, Blobs are immutable.

Create a MediaSource. However, this only works for video...

... or audio.

Upvotes: 4

Related Questions