尝试将我的视频流式Web应用程序从使用<video src="http://myserver/video.mp4">带URL的经典转换为blob,以避免在页面上的简单Ctrl + s上完全下载.
似乎必须使用XMLHttpRequest来允许从远程视频文件创建blob.
问题是XMLHttpRequest下载整个文件,这不适用于渐进式下载使用.
以下代码是从远程文件加载blob的最简单示例.
var r = new XMLHttpRequest();
r.onload = function() // Triggered only when all video is downloaded
{
video.prop("src", URL.createObjectURL(r.response));
};
r.open("GET", "http://myserver/video.mp4");
r.responseType = "blob";
r.send();
Run Code Online (Sandbox Code Playgroud)
由于应用程序用于视频流,因此该方法不可用(除非我们希望用户等待X分钟以下载整个文件,而根本不是流式传输).
有没有办法将blob与渐进式下载结合起来?
Svelte 存储文档显示正在更新字符串或整数,但我没有在存储中找到任何动态函数。
我不明白如何使该getData函数可写,以便通知 html 更改。
在下面的示例中,我希望在调用函数b后显示。updateKey
您可以在此处找到 REPL 中的最小代码:https://svelte.dev/repl/3c86bd48d5b5428daee514765c926e58 ?version=3.29.7
此处使用相同的代码,以防 REPL 宕机:
应用程序.svelte:
<script>
import { getData } from './store.js';
import { updateKey } from './store.js';
setTimeout(updateKey, 1000);
</script>
<h1>{getData()}!</h1>
Run Code Online (Sandbox Code Playgroud)
商店.js
import {setContext} from 'svelte';
import {writable} from 'svelte/store';
var data = {
'a': 'a',
'b': 'b'
};
var key = 'a';
export const getData = function() {
return data[key];
}
export const updateKey = () => {
key = 'b';
}
Run Code Online (Sandbox Code Playgroud)
目标是在商店中使用动态功能。