从 Web 服务器的 HTML 资源中播放 FLAC

2024-01-04

我正在运行一个 apache2 网站,您可以在其中上传无损文件,包括 .wav 和 .flac。 wav 文件可以立即使用,但不支持 flac。所以我想知道是否有什么方法可以在 JavaScript 的帮助下播放这些 flac 文件?

发生的情况如下:

  1. 单击按钮选择文件。
  2. 选择后,它会自动将 post 请求发送到名为“flac uploader.php”的 PHP 文件

    <form action="flacuploader.php" method="post" enctype="multipart/form-data">
        <div class="choose_file">
            <span style="cursor: pointer;">Upload Lossless File...</span>
            <input style="cursor: pointer;" type="file" name="fileToUpload" accept=".flac,.wav,.aiff,.iff,.riff" onchange="javascript:this.form.submit();">
        </div>
    </form>
    
  3. 然后 flacuploader.php 将 post 请求保存到文件夹“/lossless”,而不对文件进行任何更改。
  4. 现在问题来了。我该怎么玩?

我四处搜寻并发现了这个:Flac.js - GitHub https://github.com/audiocogs/flac.js and 使用 SIP.js 和 Flac.js 通过 WebRTC 播放 FLAC 文件 https://www.wakamoleguy.com/2014/flac-over-webrtc-with-sipjs/。 但我认为这些来源错过了我的问题,因为我只是想将其解码为可播放的文件,或者使用 javascript 来完成这项工作。

我在 /lossless 中有一个名为 test.flac 的文件,我只是希望能够在 PHP/html 中播放该文件。它并不意味着完整的质量,而是上传的预览。但原始文件仍将按原样存储。

我尝试将其放入 flacuploader.php 中:

<script src="js/aurora.js"></script>
<script src="js/flac.js"></script>
<script src="js/sip.js"></script>

<script>
    var player = AV.Player.fromFile("lossless/test.flac");
    player.play();
</script>

所以它不会播放声音。

任何事情都会有所帮助。


您不需要sip.js文件,如果您只想在浏览器中播放该文件。

要简单地播放 URL 中的文件,您可以使用fromURL创建播放器的方法。

var player = AV.Player.fromURL(url);

这里有一个JSFiddle https://jsfiddle.net/28ppk74s/示例展示了它是如何工作的。

HTML

<button id="play">Play</button>
<button id="pause">Pause</button>

JavaScript

var playBtn = document.getElementById('play');
var pauseBtn = document.getElementById('pause');
var url = "https://upload.wikimedia.org/wikipedia/commons/5/5e/Debussy_-_Pour_les_accords.flac"
var player = AV.Player.fromURL(url);

playBtn.addEventListener('click', function() {
  player.play()
})

pauseBtn.addEventListener('click', function() {
  player.pause()
})

您还可以使用FileReaderAPI 与readAsArrayBuffer读取器上将结果传递给的方法AV.Player.fromBuffer.

这里的JSFiddle https://jsfiddle.net/6yenx6vc/对于那个例子。

(抱歉,由于某种原因,示例在 SO 片段中不起作用,所以我必须使用 JSFiddle )

HTML

<input type="file" id="file-input" />
<button>play</button>

CSS

input {
  display: block;
  margin-bottom: 6px;
}
button {
  display: none
}

JavaScript

var $fileInput = $('#file-input');
var $btn = $('button');
var isPlaying = false;
var player;

function readFile(e) {
  if(window.FileReader) {
    var file  = e.target.files[0];
    var reader = new FileReader();
    if (file && file.type.match('audio/flac')) {
      reader.readAsArrayBuffer(file);
    } else {
      console.log('Please add a flac file.')
    }
    reader.onloadend = function (e) {
      player = AV.Player.fromBuffer(reader.result)
      $btn.show()
      $btn.on('click', function() {
        if(isPlaying) {
          player.pause();
          isPlaying = false;
          this.textContent = 'play'
        } else {
          player.play();
          isPlaying = true;
          this.textContent = 'pause'
        }
      })
    }
  }
}

$fileInput.on('change', readFile)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Web 服务器的 HTML 资源中播放 FLAC 的相关文章

随机推荐

  • FHIR 构建失败并出现 NoSuchMethodError:net.sf.saxon.Configuration.newConfiguration()

    按照说明进行操作http wiki hl7 org index php title FHIR Build Process http wiki hl7 org index php title FHIR Build Process我的 FHIR
  • Android 中如何获取像素颜色?

    我已将 PNG 图像 具有透明背景的图像 设置为按钮背景 当我触摸按钮时 它会显示按钮触摸位置的 X 坐标和 Y 坐标 但是 我想知道按钮触摸位置的像素颜色按钮 其实我想知道触摸的位置是按钮的透明区域还是按钮的彩色区域 您可以检查我为此目的
  • 如何在 Twitter bootstrap 中放置右侧固定导航栏

    我正在尝试在右侧添加 4 个导航按钮 单击它 我将能够导航到同一页面中的各个 div 就像单页面设计一样 我添加以下代码行以在页面右侧创建 4 个导航按钮 div class offset8 span1 well offset7 small
  • Django:使用“can_order”更改 FormSet 中表单的顺序

    我有一个表单 其中一个字段仅保留name家庭成员 我希望用户能够按照用户的意愿更改订单 当前的顺序是它们创建的顺序 我找到了旗帜can order对于我的表单集 当我将其添加到表单集中时 除了名称之外还出现了另一个字段 该字段是一个整数 显
  • 如何修复 R2jags::jags 中的“节点与父节点不一致”

    我正在使用 R 包 R2jags 运行下面附加的代码后 R 生成错误消息 节点与父节点不一致 我试图解决它 但是 错误消息仍然存在 我使用的变量是 i 采用 0 1 虚拟变量 ii NumInfo 一个计数器变量 其范围为 0 1 2 ii
  • 如何从 ASP.NET MVC# 输出中删除空格?

    如何从 ASP NET MVC 3 输出中删除所有空格 UPDATE 我知道如何使用 string Replace 方法或正则表达式来删除字符串中的空格 但我不知道如何在 ASP NET MVC 3 中使用主题来删除输出字符串中的所有空格
  • renderInContext 向应用程序内存征税

    我在 2448 X 2448 像素图像上运行此代码 fullScaleView也是 2448 X 2448 fullScreenView Rect 0 0 2448 2448 该方法完成后 应用程序内存从 49 7MB 跳至 240MB 再
  • PHP:isset 和 !empty 的快捷方式?

    我想知道是否有更好的想法来解决下面的问题 我有一个带有许多输入字段的表单 例如
  • 替换字符串数组中的字符 Javascript

    我已经定义并填充了一个名为的数组vertices 我可以将输出打印到 JavaScript 控制台 如下所示 v 2 11733 0 0204144 1 0852 v 2 12303 0 0131256 1 08902 v 2 12307
  • 如何引用哈希中键的值

    我希望能够引用 a 中的键Hash这样 如果该键的值发生变化 那么引用它的任何内容也会像这样 hash hash 1 foo hash 2 hash 1 hash 1 bar puts hash 2 I want this to be ba
  • “gcloud 应用程序部署”命令不起作用

    我安装了 python 版本的谷歌应用程序引擎 并在控制台中创建了一个新项目 我按照终端中的说明进行操作 我使用命令gcloud app deploy在我的工作目录中然后我收到此错误 ERROR The application field
  • 通过AWS CLI使用jar包的AWS lambda update-function-code

    我正在尝试通过 AWS CLI 使用本地计算机上的 jar 更新我的 lambda 函数代码 aws lambda 具有更新 zip 文件的函数代码的命令 但不包含更新 jar 的函数代码的命令 我可以使用 s3 存储桶上传 但我需要从本地
  • 类型错误:需要全局模式字符串

    我正在尝试编译sass using gulp ruby sass但我得到了TypeError glob pattern string required 这就是我的gulpfile js好像 var gulp require gulp sas
  • 使用Python根据日期抓取表格

    since a week ago i have been trying to scrape a table from this site https www bi go id id moneter informasi kurs transa
  • “NOT NULL DEFAULT ''”有什么意义?

    我在我一直从事的项目中的数据库上的许多字段中都看到过这种情况 其中列将被定义为不为空 但默认值为空字符串 这样做有什么意义呢 如果允许空字符串 为什么不只允许字段为空呢 NULL 有特殊的行为 将任何内容与 NULL 进行比较都会返回一个N
  • 在合并配置之前如何测试 dependentabot

    在将它合并到我的存储库之前 有没有办法测试 dependentabot 是否按预期工作 我在一个相当大的团队工作 我想确保我可以在合并之前测试功能 我创建了一个分支 其中向我们的开发分支开放了 PR 有没有办法确保创建更新依赖项的 PR 并
  • 使用 TeamCity 构建后如何部署?

    我正在将 TeamCity 设置为我的构建服务器 我已经设置了我的项目 它正在从 subversion 正确更新 并且构建正常 下一个是什么 理想情况下 我希望将其自动部署到测试服务器 并手动部署到实时 临时服务器 解决这个问题的最佳方法是
  • 从不完整的 HTTP JSON 响应中完成 json 字符串

    有时我会从json api下载数据 它会中途中断 通常是由于网络超时或其他一些问题 但是 在这种情况下 我希望能够读取可用的数据 这是一个例子 response 200 message None params body timestamp
  • 将方法和函数存储在数组中[重复]

    这个问题在这里已经有答案了 我不知道它是否可行 但我可以将方法或函数存储在数组中吗 我现在知道多维数组并用它来存储我想要的许多数组 我现在想做的是将我创建的方法或函数存储在某个类中 因为我想将所有函数存储到某个类 然后如果我想使用循环则调用
  • 从 Web 服务器的 HTML 资源中播放 FLAC

    我正在运行一个 apache2 网站 您可以在其中上传无损文件 包括 wav 和 flac wav 文件可以立即使用 但不支持 flac 所以我想知道是否有什么方法可以在 JavaScript 的帮助下播放这些 flac 文件 发生的情况如