当前位置: 首页 > 知识库问答 >
问题:

Javascript:无法播放wav文件

季城
2023-03-14

基于StackExchange的代码,我编写了打开wav文件的代码。wav文件本身是一个有效的文件,因为它可以与我的Python程序正常配合使用。但是javascript函数不起作用。声音文件与我的html文件位于同一文件夹中。

<div id="play_or_pause_or_exit">    
<button onclick="playAudio()" type="button" id="play"       style="display:inline-block;">Play table</button>
<button onclick="pauseAudio()" type="button"  id="pause" style="display:inline-block;">Pause table</button> 
<button onclick="cancelAudio()" type="button"  id="cancel" style="display:inline-block;">Exit tables</button> 
<script>
var audio;

function setupAudio(){
var audio = new Audio('plus1_071016_Alex.WAV');
}

function playAudio(){
    audio.play();
}   

function pauseAudio(){
    audio.pause();
}

function cancelAudio(){
    audio.pause();
sound.currentTime = 0;
}

</script>

</body>
</html>

任何帮助都将不胜感激。

共有2个答案

楮乐邦
2023-03-14

您没有入口点。。。什么是setupAudio()?这会让你振作起来

<html>
<head>
<title>Test</title>
</head>
<body>
<script>

 // var audio = new Audio("plus1_071016_Alex.WAV");
 // var audio = new Audio("http://glpjt.s3.amazonaws.com/so/av/a12.mp3");                 

 var audio = new Audio("https://s3.amazonaws.com/audio-experiments/examples/elon_mono.wav");
		
function playAudio() {
    audio.play();
}   

function pauseAudio() {
    audio.pause();
}

function cancelAudio() {
    audio.pause();
    audio.currentTime = 0;
}

</script>
   	<body>
<div id="play_or_pause_or_exit">    
<button onclick="playAudio()" type="button" id="play" style="display:inline-block;">Play/Resume table</button>
<button onclick="pauseAudio()" type="button"  id="pause" style="display:inline-block;">Pause table</button> 
<button onclick="cancelAudio()" type="button"  id="cancel" style="display:inline-block;">Exit tables</button> 

</body>
</html>
王景山
2023-03-14

查看yout脚本的第一行:

var audio;

function setupAudio(){
    var audio = new Audio('plus1_071016_Alex.WAV');
}

您正在将具有同名变量的全局变量音频屏蔽到setupAudio函数中。这样,助手函数playAudio、pauseAudio和取消音频将无法访问您的Audio对象。我假设在您的代码中的某个地方,在您的示例中未显示,您将调用setupAudio函数。

一个快速而真实的肮脏解决方案:将var关键字删除到函数中,瞧:您污染了您的全局环境,但您的代码应该可以工作。

我将使用一个简单的模块模式,遵循稍微不同的路线:

我更喜欢将样式设置在头部的某个位置,远离元素标记:它们会分散我的注意力

<style>
    #play_or_pause_or_exit > button { display: inline-block; }
</style>

我已经重新格式化了您的按钮标签,以适应stackoverflow上狭窄的文本区域-P、 删除了内联样式并添加了禁用属性,以防止用户在音频准备就绪之前单击按钮。

<div id="play_or_pause_or_exit">    
    <button onclick="Player.play()" 
            type="button" 
            id="play"
            disabled>Play/Resume table</button>
    <button onclick="Player.pause()" 
            type="button"
            id="pause"
            disabled>Pause table</button> 
    <button onclick="Player.stop()" 
            type="button"
            id="cancel"
            disabled>Exit tables</button> 
</div>

在身体底部的某个地方,我会把这个脚本:

var Player = (function (audiourl) {

    var audio = new Audio(audiourl);

    [].forEach.call(
        document.querySelectorAll("#play_or_pause_or_exit > button"),
        function(x) {
            x.disabled=false;
        });

    return {
        "play": function() { audio.play(); },   
        "pause": function() { audio.pause(); },
        "stop": function() {
            audio.pause();
            audio.currentTime = 0;
        },
    };
})("plus1_071016_Alex.WAV");

Player now是一个IIFE(立即调用的函数表达式),它创建一个对象,用播放、暂停和停止方法封装您的音频资源以控制资源。

请注意,音频url现在位于声明的底部,一旦定义了生成函数,它就会被加载,正如您可能从函数表达式名称猜到的那样。

全球环境仍然受到污染,但只有一个对象封装了助手功能和要发挥的资源。单点访问与四个功能和一个资源变量。

 类似资料:
  • 问题内容: 我正在用Java 做辫子。如果倒带时间,声音会向后播放。如何向后播放WAV文件?也许有像这样的流?在Braid网站上,您可以看到我的意思。 更新: _ 解决! 看到我自己的帖子。_ 问题答案: !!!!!! 我自己解决了这个问题(14岁!!), 我写了这个课: 然后:

  • 问题内容: 我试图互相播放一些WAV文件。我尝试了这种方法: 但这同时发挥了所有作用。所以我需要一个看起来像这样的函数: 向量包含文件,例如:, 我已经寻找了四个多小时,但似乎找不到有效的解决方案:( 我还尝试将WAV文件连接到一个AudioInputStream。它不会产生任何编译器错误,但是声音完全混乱了。码: 编辑 即使我尝试将前两个文件放在一起,也会失败: 问题答案: 这段代码有点底层,但

  • 问题内容: 我正在尝试使用Java播放* .wav文件。我希望它执行以下操作: 按下按钮时,播放一声短促的哔声。 我已经用谷歌搜索了,但是大多数代码都没有用。有人可以给我一个简单的代码片段来播放.wav文件吗? 问题答案: 没有Java反射的解决方案 , ) Java反射会降低性能。跑步:

  • 问题内容: 我尝试pygame播放wav文件,如下所示: 但是它改变了声音,我不知道为什么!我阅读了此链接解决方案,但无法解决播放wave文件的问题! 对于此解决方案,我不知道应该导入什么? 对于这个解决方案/ dev / dsp在新版本的linux中不存在: 而当我尝试pyglet它给我这个错误: 问题答案: 您可以使用PyAudio。我的Linux上的一个示例可以正常工作:

  • 我目前正在尝试学习音频编程。我的目标是打开一个wav文件,提取所有内容并使用RtAudio播放示例。 我制作了一个WaveLoader类,让我提取样本和元数据。我用这本指南来做这件事,我用010编辑器检查了一切都是正确的。这是010编辑器的快照,显示了结构和数据。 这就是我在WaveLoader类中存储原始样本的方式: 如果我打印出我得到的每个样本:1, -3, 4, -5... 问题是,我不确定

  • 我正在使用Jplayer插件来播放音频文件。它可以播放mp3文件,但不支持wav音频文件。我搜索了原因,知道wav音频文件应该是特定的格式,可以用flash或HTML5播放。但是我的wav文件的比特率是64kbps。如何播放这种格式的wav音频文件,例如将wav转换为合适的格式并播放该文件。是否有任何插件可以播放任何格式的wav文件,或者有插件可以将wav转换为合适的格式,以便能够播放文件或任何其