使用 HTML5 创建音频可视化工具

2023-11-30

我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页。 然而,与发现的问题类似这个帖子,我的音频文件(即使使用本地文件进行测试)就是没有声音,当然可视化也没有任何作用。

我的 HTML 如下:

<html>
   <head>
     <link rel="stylesheet" type="text/css" href="style.css">
   </head>
   <body>
     <audio src="http://50.22.218.101:38838/;steam.mp3" id="audio" 
     controls>HTML5 Audio element not supported</audio>
     <canvas id="canvas" width="800" height="350"></canvas>
     <script src="main.js"></script>
   </body>
</html>

这是“main.js”:

window.AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;

window.onload = function() {
    var audio = document.getElementById('audio');
    var ctx = new AudioContext();
    var analyser = ctx.createAnalyser();
    var audioSrc = ctx.createMediaElementSource(audio);
    // we have to connect the MediaElementSource with the analyser 
    audioSrc.connect(analyser);
    analyser.connect(ctx.destination);
    // we could configure the analyser: e.g. analyser.fftSize (for further infos read the spec)
    // analyser.fftSize = 64;
    // frequencyBinCount tells you how many values you'll receive from the analyser
    var frequencyData = new Uint8Array(analyser.frequencyBinCount);

    // we're ready to receive some data!
    var canvas = document.getElementById('canvas'),
        cwidth = canvas.width,
        cheight = canvas.height - 2,
        meterWidth = 10, //width of the meters in the spectrum
        gap = 2, //gap between meters
        capHeight = 2,
        capStyle = '#fff',
        meterNum = 800 / (10 + 2), //count of the meters
        capYPositionArray = []; ////store the vertical position of hte caps for the preivous frame
    ctx = canvas.getContext('2d'),
    gradient = ctx.createLinearGradient(0, 0, 0, 300);
    gradient.addColorStop(1, '#0f0');
    gradient.addColorStop(0.5, '#ff0');
    gradient.addColorStop(0, '#f00');
    // loop
    function renderFrame() {
        var array = new Uint8Array(analyser.frequencyBinCount);
        analyser.getByteFrequencyData(array);
        var step = Math.round(array.length / meterNum); //sample limited data from the total array
        ctx.clearRect(0, 0, cwidth, cheight);
        for (var i = 0; i < meterNum; i++) {
            var value = array[i * step];
            if (capYPositionArray.length < Math.round(meterNum)) {
                capYPositionArray.push(value);
            };
            ctx.fillStyle = capStyle;
            //draw the cap, with transition effect
            if (value < capYPositionArray[i]) {
                ctx.fillRect(i * 12, cheight - (--capYPositionArray[i]), meterWidth, capHeight);
            } else {
                ctx.fillRect(i * 12, cheight - value, meterWidth, capHeight);
                capYPositionArray[i] = value;
            };
            ctx.fillStyle = gradient; //set the filllStyle to gradient for a better look
            ctx.fillRect(i * 12 /*meterWidth+gap*/ , cheight - value + capHeight, meterWidth, cheight); //the meter
        }
        requestAnimationFrame(renderFrame);
    }
    renderFrame();
    audio.play();
};

知道我做错了什么吗?


通常,您只需向 html 音频标签添加跨域选项即可解决此问题

so this:

<audio src="http://50.22.218.101:38838/;steam.mp3" id="audio" controls>

变成这样:

<audio src="http://50.22.218.101:38838/;steam.mp3" crossorigin="anonymous" id="audio" controls>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HTML5 创建音频可视化工具 的相关文章

  • 使绝对定位的div扩展父div高度

    正如你在下面的 CSS 中看到的 我想要child2将自己定位在之前child1 这是因为我目前正在开发的网站也应该在移动设备上运行 在移动设备上child2应该位于底部 因为它包含我想要在移动设备上的内容下方的导航 为什么不是 2 个母版
  • Chrome 跨域 PATCH 请求不起作用

    我有一个带有 REST Api 的网站 现在我正在创建一个浏览器扩展 它将从某些页面收集数据并将它们发送回 REST Api 因为我希望我的扩展能够与 Firefox 和 Chrome 兼容 并且易于维护 所以我将实际代码作为脚本标记注入到
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am
  • 保存下拉列表中的值

    这是我的情况 我有 2 页 一页用于选择值 一页用于编辑与该值关联的数据库相关内容 现在 我对如何将从下拉列表中选择的值保存到 PHP 的变量中一无所知 并且已经进行了相当多的研究 有任何想法吗 HTML
  • 如何在引导程序中制作两个等高的列?

    我有这个代码 HTML div class container fluid div class row div class col md 6 p Line p p Line p p Line p p Line p p Line p p Li
  • 为什么 Firefox 关闭空 html 标签?

    我注意到在 Firefox 中 当我查看源代码时 它会向空标签项添加结束标签 例如 hr and img src image jpg 在 Firefox 中查看源代码我明白了 hr and img src image jpg 该文档是 HT
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • CreateJs Canvas 形状在 Windows Phone 上丢失坐标

    我正在制作一个 Createjs 和 html5 项目 在其中绘制一个形状 红色圆圈 当我单击圆圈时它会发出警报 它在所有台式机和 Android 手机上都能正常工作 除非我在 Windows Phone 中打开它 否则它在普通屏幕上工作正
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • iPhone 上的全屏视频播放器是否有“onClose”事件?

    我在网站上使用 html5 视频播放器 当用户开始播放时 播放器进入全屏模式并播放视频 视频结束后 我看到ended事件并通过关闭视频播放器myvideo webkitExitFullScreen 现在 当玩家实际获得时我需要另一个事件cl
  • 如何在使用类型分散时将箭头添加到行尾

    如何在 y 不等于 0 且系列类型以线宽 2 分散的情况下正确地将箭头添加到行的每一端 在这里我可以看到箭头已添加但未正确添加 请看这个 部分工作小提琴 http jsfiddle net vnYCX 这是我的 JS 最初的原型是由 sta
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • IE9 中的无效字符 DOM 异常

    以下这段 JS 曾经在 IE8 中工作 现在在 IE9 中失败 document createElement 我收到以下异常 SCRIPT5022 DOM 异常 INVALID CHARACTER ERR 5 上面这段代码是不是不符合标准呢
  • 如何使用 API 中的数据填充选择的下拉元素 - ReactJS

    我对 React 还很陌生 我正在从 API 获取数据 当我检查控制台日志时可以看到数据 但是我不知道如何使用 map 创建一个新数组 然后选项元素可以使用该数组来显示货币代码 目前它填充下拉列表 但选项元素全部为空 结果显示为 NaN 下
  • 从函数在 python 3 中创建全局变量

    我想知道为什么在函数结束后我无法访问变量 variable for raw data 代码是这样的 def htmlfrom Website URL import urllib request response urllib request
  • 如何在react.js中将/n替换为换行符?

    我正在尝试更换每一个 n to a br tag in ReactJS In my note note对象有一个包含多个的字符串 n in it 示例注释 注释 test ntest ntest 我尝试过的ReactJS note note
  • 使用 FormData 上传 JavaScript Blob

    我在将 javascript 创建的 blob 上传到我的服务器时遇到问题 基本思想是用户上传图像 在 javascript 中我对图像进行居中裁剪并在传输之前对其进行下采样 图像处理工作正常 但上传本身无法正常工作 这是执行从 canva
  • “memset”没有 DLL 那么如何 ctype 它

    如何使用memset在 jsc 类型中 没有对应的 DLL 我搜索 搜索了 js ctype 代码 但找不到要破解的示例 如果你只是想memset一个数组为零字节 然后我有 好消息 大家 js ctypes 会将新数组初始化为零 否则 最简
  • 如何使用 Chart.js 版本 3.2.1 在圆环图中添加文本

    我正在使用 Canvas 在 HTML 中使用 如何使用在圆环图中添加文本 这是我的 javascript 代码和 HTML 代码 我使用了图表js版本3 2 1 所以请给出相同版本 3 的解决方案 var overallStatsCanv
  • 文件和目录条目 API 在 Chrome 中损坏?

    我正在尝试使用文件和目录条目 API 创建一个文件上传器工具 该工具允许我将文件和目录的任意组合放入浏览器窗口中 以供读取和上传 我完全意识到 可以通过使用文件输入元素来实现类似的功能webkitdirectory已启用 但我正在测试一个用

随机推荐

  • 如何从 MS Word 创建 PCL 文件

    如何创建类似于现有 MS 文档的新 PCL 文件 我有 MS 文档模板并将其替换为实际数据 我需要实现相同的 PCL 格式 创建 PCL 文件作为模板并将其替换为数据库中的实际值并将其发送到传真 安装新打印机 当询问端口时 创建一个 本地端
  • 来自另一个线程的 DoDragDrop()

    每次我想让用户拖动一个控件时 我都会调用该控件的 DoDragDrop 拖放工作正常 但我对周围的事情有问题 DoDragDrop 完全阻塞表单 没有计时器事件跳转 没有处理绘制消息 DoDragDrop 不仅会阻止拖放操作 还会阻止目标程
  • 尝试删除文件时“该进程无法访问该文件,因为该文件正在被另一个进程使用”

    当逐一删除文件时 会生成错误 该进程无法访问该文件 因为在尝试删除文件时该文件正在被另一个进程使用 代码 对于删除这样的文件有什么建议吗 private void DeleteFilesFromDestination string cons
  • MinGW 链接器错误:winsock

    我正在 Windows 上使用 MinGW 编译器来编译带有套接字的 C 应用程序 我的链接命令如下所示 g exe Wall Wno long long pedantic lwsock32 o dist Windows piskvorky
  • 在 PDO 中获取 SUM

    下面是我的代码 由于某种原因它没有给我总和 它总是返回 0 为什么它不起作用 我用过if totSubmits 以避免我的数据库中出现空白字段 我也尝试删除AS due fees并使用 dueAmont result 0 但没有运气 sql
  • C++ |主函数错误 |初学者[重复]

    这个问题在这里已经有答案了 我对 C 完全陌生 我正在使用 Eclipse 但是 我不知道为什么我在 main 函数中收到此错误 错误 main 必须返回 int 我的代码是 void main char a while a q strin
  • 如何在 bootstrap 4 和 angular2 中使用 Glyphicons?

    我正在使用 angular cli 和 bootstrap4 制作一个应用程序 但是当我对 Glyphicons 进行一些引用时 图标不会出现 例如 当我添加以下代码时
  • 响应式全屏 CarouFredSel 幻灯片

    这是一个自我问答 我已经使用令人惊叹的 CarouFredSel 滑块插件进行开发很长时间了 每次我必须制作需要在宽度和高度上响应的全屏幻灯片时 我都会忘记该怎么做 所以我为我和所有其他为此苦苦挣扎的人做了这个问答 所以 问题是 如何制作全
  • Java 1.6 与 C++ 的性能对比?

    随着 Java 1 6 的推出 我们是否可以说 Java 1 6 的性能几乎与 C 代码相当 或者与 C 相比 Java 在性能方面仍然有很多需要改进的地方 Thanks Debian 喜欢对这类事情进行基准测试 在他们的例子中 Java
  • JavaPreparedStatementsetString改变字符

    正如标题所示 可以肯定的是 我正在调试我的应用程序 因此在我将字符串放入PreparedStatement变量中时 特殊字符将更改为 我实际上不知道在哪里搜索应该修复它的东西 所以我不知道是否需要代码 无论如何 我会在这里放一些 Prepa
  • 如何从 FZF 在特定应用程序中打开文件

    我想用FZF搜索文件 然后在我选择的编辑器中打开它们 例如太棒了 原子 我不知道如何为此配置我的 shell 我已经尝试了以下方法 但无法让它工作 你能帮我吗 Thanks fe local files IFS n files fzf tm
  • c++:如何打印不带回车的新行[重复]

    这个问题在这里已经有答案了 可能的重复 如何使 cout 表现得像二进制模式 我使用 C 将二进制数据打印到标准输出 然后将其重定向到文件 我不想直接写入文件 但是 当我尝试打印该值时 0A 我正进入 状态 0D 0A 这是我将输出复制到
  • 从平面 Modelica 代码中提取类型/类名

    我想知道是否已经存在从平面 Modelica 代码中提取所有变量及其相应类型 分别为类名 的可能性 例如 给定扁平 Modelica 模型的摘录 constant Integer nSurfaces 8 constant Integer c
  • 使用 DOMDocument 从网站抓取所有图像

    我基本上想要得到ALL使用 DOMDocument 的任何网站中的图像 但由于某些我还不知道的原因 我什至无法加载我的 html url http
  • Elasticsearch 未在浏览器中运行

    我已经在 Ubuntu 中下载了 Elasticsearch 8 1 安装成功后 当我执行 curl u elastic https 127 0 0 1 9200 k 它显示了预期的弹性搜索响应 但当我击中http 127 0 0 1 92
  • 如何使用 Fiddler 将 XML POST 到 ASP.NET WebAPI

    给定以下 ASP NET WebAPI 我尝试使用 Fiddler 发送测试 POST 但无法让它工作 无论我发送什么 我总是只看到没有数据发送到服务信息 Imports System Web Http Imports System Net
  • SQLITE 将大量行转置为列

    我有一个这样订购的数据库 ID Subject Value 1 Subj1 Val1 1 Subj2 Val2 2 Subj1 Val3 2 Subj5 Val4 等等 ID 数以千计 受试者数以万计 我想找到这个矩阵的转置 我怎么做 如果
  • 从 mcrypt_decrypt 到 openssl_decrypt

    我有一个问题 我想用 open ssl 解密替换对 mcrypt 的函数调用 但输出是混合的 这是 mcrypt 实现 效果很好 decrypted trim mcrypt decrypt MCRYPT RIJNDAEL 128 subst
  • 在 JPA 上映射 Oracle XMLType (EclipseLink)

    我们的项目有一些特殊要求 其中之一是从 Oracle 10g 数据库的 XMLType 数据库列获取数据 我们找到了一个使用 JDBC 的简单解决方案 但它会使应用程序有点混乱 因为所有数据访问都是通过 JPA 完成的 使用的实现是 Ecl
  • 使用 HTML5 创建音频可视化工具

    我正在尝试使用我在网上找到的示例对在线广播流使用音频可视化这一页 然而 与发现的问题类似这个帖子 我的音频文件 即使使用本地文件进行测试 就是没有声音 当然可视化也没有任何作用 我的 HTML 如下