gpt4 book ai didi

javascript - 如何通过 javascript 更改 html5 视频的 src 而不会崩溃 chrome 或泄漏内存?

转载 作者:太空狗 更新时间:2023-10-29 13:30:18 33 4
gpt4 key购买 nike

我正在开发仅在 Chrome 上运行的应用程序。

我需要能够从正在播放的视频切换源。

我已经使用 javascript (&jQuery) 来更改 src 属性:

$fullscreenVideo.get(0).src = '/video/' + name + '.mp4'; // crash here
$fullscreenVideo.get(0).load();
$fullscreenVideo.get(0).play();

它工作了几次,但我的 chrome(试用了测试版和开发 channel )最终崩溃了(页面变得无响应)。

如果我尝试在最后一个代码块之前创建一个新元素:

$fullscreenVideo.remove();
$fullscreenVideo = $('<video id="video-fullscreen" width="800" height="600" loop="loop"></video>').appendTo("#page-fullscreen > div.fullscreen");

每次视频切换都会将 RAM 增加 20Mo 而不会退缩。

有没有办法跟踪/防止 chrome 在 src 更新时崩溃?有没有办法强制释放内存?

最佳答案

我也遇到过同样的问题。
我在一些论坛上读到这是 chrome 的内存泄漏错误(有人说这只发生在 chrome 8 中,在 chrome 6 中工作正常,但我没有测试它)。

我还读到 sleep 有帮助。我试过了,确实如此,如果我在更改 url 属性并调用 load() 之前先休眠,崩溃次数就会减少。但经过多次更改后仍然继续崩溃。

然后,我尝试使用 setTimeout(与 sleep 不同,它不会阻塞 CPU,让 chrome 可以自由工作)。

它现在正在运行。尝试查看我的代码是否有帮助。

var videoChangingPending = false;
function changeMovieSource(url, title){

var $video = $('#video');
try {
document.getElementById('video').src = url;
}
catch (e) {
alert(e);
}

$video.attr('autoplay', 'true');
$video.data('currentTitle', title);

document.getElementById('video').load();

videoChangingPending = false;
}

function startPlayer(url, title) {

if(videoChangingPending == true)
return;



document.getElementById('video').pause();


videoChangingPending = true;
var changeMovieCallback = function(){ changeMovieSource(url, title);}
var t = setTimeout(changeMovieCallback, 800);

}

关于javascript - 如何通过 javascript 更改 html5 视频的 src 而不会崩溃 chrome 或泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4694519/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com