Tengo una función js para reproducir cualquier sonido usando la interfaz de Audio (creando una nueva instancia para cada llamada).Javascript force GC collection?/¿Objeto con fuerza libre?
Esto funciona bastante bien, hasta la llamada número 32 (a veces menos). Este problema está directamente relacionado con el lanzamiento de la instancia de Audio. Lo sé porque he dejado que se ejecute el GC en Chromium y me permita reproducir otros 32 o más.
He aquí un ejemplo de lo que estoy haciendo:
<html><head>
<script type="text/javascript">
function playSound(url) {
var snd = new Audio(url);
snd.play();
snd = null;
}
</script>
</head>
<body>
<a href="#" onclick="playSound('blah.mp3');">Play sound</a>
</body></html>
también tengo esto, que funciona bien para las páginas que tienen menos de 32 reproducirSonido llama:
var AudioPlayer = {
cache: {},
play: function(url) {
if (!AudioPlayer.cache[url])
AudioPlayer.cache[url] = new Audio(url);
AudioPlayer.cache[url].play();
}
};
pero esto no será trabajo para lo que quiero hacer (dinámicamente reemplazar un div con otro contenido (de archivos separados), que tienen aún más sonidos en ellos - 1. el uso de la memoria se dispararía fácilmente, 2. muchos sonidos nunca se reproducirán).
Necesito una forma de liberar el sonido inmediatamente. ¿Es posible hacer esto? No he encontrado ningún método de liberación/cierre/descarga para la interfaz de audio.
Las páginas se verán localmente, por lo que la carga constante de sonidos no es un factor importante en absoluto (y la mayoría de los sonidos son bastante cortos).
Greeaat. Tendría que empezar a usar un script para iniciar Chromium para este proyecto (ya estoy usando --allow-file-access-from-files para poder abrir archivos desde el sistema de archivos local). EDITAR: Considero que este es un último recurso. – komiga
@plash: asegúrese de verificar [la publicación a la que he vinculado] (https://groups.google.com/group/chromium-extensions/browse_thread/thread/5dc4be46e434116a?pli=1), porque la respuesta que cité tenía más información que puede ser relevante. No probé esto personalmente. –
No funciona en compilaciones sin depuración. Solo lo probé. – komiga