<div class="base64"></div>
<script>
console.log(new Date());
setInterval(() => {
setTimeout(() => {
console.log(new Date().toTimeString());
}, 500);
}, 500);
function genAudio(base64Video) {
let audio = document.createElement('audio');
audio.id = 'audio1';
audio.loop = 'true';
audio.autoplay = 'true';
audio.controls = true;
audio.src = base64Video;
audio.volume = 0.5; // 最小值0.5
return audio;
}
// 新键文件输入框元素
const input = document.createElement('input');
input.type = 'file';
// 文件输入框插入位置
document.querySelector('.base64').append(input);
input.onchange = function () {
const files = input.files; // e.target.files; // FileList
const reader = new FileReader();
reader.readAsDataURL(files); // 转Base64
reader.onload = function () {
console.log('base64 result:', reader.result);
const video = genAudio(reader.result);
// 音频插入位置
document.querySelector('.base64').append(video);
};
};
</script>
```
原来我之前用的循环播放视频没起作用。
实测循环播放音频方法有效,但不好用,会让标签显示正在播放音频,音量最低到0.5,耳机依然会有噪音。
Web worker 是唯一好用的方案。 关于csp好像可以用GM_addElement越过,脚本猫在v0.11.0-beta.1开始支持 zhege 王一之 发表于 2022-12-2 11:04
关于csp好像可以用GM_addElement越过,脚本猫在v0.11.0-beta.1开始支持
哥哥快想个办法让GM_addElement能添加Worker
【我之前想的办法是插件提前注入包含创建Worker的<script>标签
因为document_start的运行时机早于CSP的<meta>标签插入时机
也就是说document_start的时机还没有声明CSP,这个时候可以随意绕过CSP 但是过了这段时间就不行了 steven026 发表于 2022-12-2 14:40
哥哥快想个办法让GM_addElement能添加Worker
【我之前想的办法是插件提前注入包含创建Worker的标签
URL.createObjectURL用base64 url替换怎么样? 王一之 发表于 2022-12-2 15:01
URL.createObjectURL用base64 url替换怎么样?
我试过同样受CSP限制
CSP设了self 怎么都绕不过……别说src=XXX了,连没有src的只有textContent的<script>console.log(123)</script>都不行 搜来搜去又跑过来读一遍!
页:
1
[2]