将Web Audio API流发送到服务器端Java进行处理的最佳方法

tpdietz

目前,我有一个网站可以使用Matt Diamond的recorder.js + getUserMedia(Web音频API)录制音频。客户端完成录制后,我通过ajax发布将数据(.wav中)上传到文件系统。然后,我的服务器端Java将data.wav处理为其他格式。这很好。

但是,我担心ajax发布的性能/带宽问题,并希望探索将数据直接流式传输到Java代码或文件系统的选项。有人对如何将此客户端音频流(用getUserMedia打开)传递给服务器端Java有任何建议吗?如果有什么不同,我们将使用spring框架。

谢谢。

编辑:

这是要求的代码:

我将其添加到recorder.js

    this.upload = function () {
        var data = new FormData();
        data.append('file', blob);

        $j.ajax({
            url :  "/Your_Path/To_PHP/action/UploadAudio/",
            type: 'POST',
            data: data,
            contentType: false,
            processData: false,
            success: function(data) {
                alert("Success");
            },    
            error: function() {
                alert("uploadFail");
           }
        });
     }

并在php代码上:

        if($_GET['action'] == 'UploadAudio') {
            if (!file_exists('/audioArchiveDestination/subDirectory/')) {
                mkdir('/audioArchiveDestination/subDirectory/', 0777, true);
            }
            $filePath = "/audioArchiveDestination/subDirectory/";

            $filename = $_SESSION['member_id'].'_'.time();   //Can be anything
            $fileExtension = "wav";
            $uploadSuccess = move_uploaded_file($_FILES['file']['tmp_name'], $filePath.$filename.".wav");

            if($uploadSuccess) {
                $results = json_encode(array("filename" => $filename));
                echo $results;
            }
        }
Padenot

您可以尝试在客户端上对数据进行编码,以减少带宽。此外,您可以在收到数据后立即发送数据。我认为MediaRecorder(编码媒体的标准API)目前仅在Firefox中可用,但我敢肯定其他浏览器也会实现它。无论如何,这是怎么回事,您可以将evt.data每次调用的内容发送给Java应用程序以流式传输。

<audio controls></audio>
<button></button>
<script>
  var v = document.querySelector("video");
  var b = document.querySelector("button");

  window.navigator.mozGetUserMedia({audio:true}, function(stream) {
    v.mozSrcObject = stream;
    v.play();

    var mediaRecorder = new MediaRecorder(stream);
    var chunks = [];

    b.addEventListener("click", function() {
        mediaRecorder.stop();
    });

    mediaRecorder.ondataavailable = function(evt) {
      chunks.push(evt.data);
      // or send evt.data using an XMLHttpRequest to the server
    };

    mediaRecorder.onerror = function(evt) {
      console.log('onerror fired');
    };

    mediaRecorder.onstop = function(evt) {
      console.log('onstop fired');
      // make a blob out of all the chunks
      var blob = new Blob(chunks, { 'type' : 'audio/ogg; codecs=opus' });
      // allow the user to download the opus file
      window.location.href = URL.createObjectURL(blob);
    };

    mediaRecorder.onwarning = function(evt) {
      console.log('onwarning fired');
    };

    v.addEventListener("loadedmetadata", function() {
      mediaRecorder.start();  
      v.play();
    });

    v.addEventListener("ended", function() {
      mediaRecorder.stop();
      mediaRecorder.requestData();
    });
  }, function() {
    alert("gUM failure")
  });
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将服务器端系统消息发送到通道?

来自分类Dev

无法将数据发送到服务器端?

来自分类Dev

将PDF文件从Web服务器(php)发送到客户端PC进行打印

来自分类Dev

如何使用Websocket将Spark Streaming数据从服务器端发送到客户端?

来自分类Dev

使用p:fileUpload将完整的客户端文件路径发送到服务器端

来自分类Dev

将变量客户端(JS Ajax)发送到服务器端(Python Django)

来自分类Dev

一次将gridview数据从客户端发送到服务器端

来自分类Dev

HTML5文件API-将文件发送到服务器进行处理

来自分类Dev

Web Audio API和<audio>标签

来自分类Dev

Web Audio API和<audio>标签

来自分类Dev

如何将数据从Web套接字服务器发送到客户端?

来自分类Dev

将多个图像发送到Web服务器

来自分类Dev

将多个图像发送到Web服务器

来自分类Dev

如何将正则表达式发送到流星中的服务器端

来自分类Dev

如何将正则表达式发送到流星中的服务器端

来自分类Dev

将分页的jQuery DataTables表的所有数据发送到服务器端而不是仅发送到当前页面

来自分类Dev

除了POJO以外,还有其他方法可以将JSON形式的响应从服务器端发送到angular吗?

来自分类Dev

将数据从HTTP服务器端推送到浏览器客户端的最佳方法

来自分类Dev

使用WebClient将图像数据发送到服务器的最佳方法

来自分类Dev

正确的方法将Facebook令牌从客户端发送到服务器

来自分类Dev

将图像从Java客户端发送到python服务器

来自分类Dev

Java客户端将音频发送到UDP服务器

来自分类Dev

每秒将数据从移动客户端发送到Java服务器

来自分类Dev

Java套接字-将数据从服务器发送到客户端

来自分类Dev

将数据从Java客户端发送到Node.js服务器

来自分类Dev

将文件作为块从Java客户端发送到服务器

来自分类Dev

服务器如何使用Java将消息发送到客户端

来自分类Dev

将完整的向量从Python客户端发送到Java服务器

来自分类Dev

Java套接字-将数据从客户端发送到服务器

Related 相关文章

  1. 1

    将服务器端系统消息发送到通道?

  2. 2

    无法将数据发送到服务器端?

  3. 3

    将PDF文件从Web服务器(php)发送到客户端PC进行打印

  4. 4

    如何使用Websocket将Spark Streaming数据从服务器端发送到客户端?

  5. 5

    使用p:fileUpload将完整的客户端文件路径发送到服务器端

  6. 6

    将变量客户端(JS Ajax)发送到服务器端(Python Django)

  7. 7

    一次将gridview数据从客户端发送到服务器端

  8. 8

    HTML5文件API-将文件发送到服务器进行处理

  9. 9

    Web Audio API和<audio>标签

  10. 10

    Web Audio API和<audio>标签

  11. 11

    如何将数据从Web套接字服务器发送到客户端?

  12. 12

    将多个图像发送到Web服务器

  13. 13

    将多个图像发送到Web服务器

  14. 14

    如何将正则表达式发送到流星中的服务器端

  15. 15

    如何将正则表达式发送到流星中的服务器端

  16. 16

    将分页的jQuery DataTables表的所有数据发送到服务器端而不是仅发送到当前页面

  17. 17

    除了POJO以外,还有其他方法可以将JSON形式的响应从服务器端发送到angular吗?

  18. 18

    将数据从HTTP服务器端推送到浏览器客户端的最佳方法

  19. 19

    使用WebClient将图像数据发送到服务器的最佳方法

  20. 20

    正确的方法将Facebook令牌从客户端发送到服务器

  21. 21

    将图像从Java客户端发送到python服务器

  22. 22

    Java客户端将音频发送到UDP服务器

  23. 23

    每秒将数据从移动客户端发送到Java服务器

  24. 24

    Java套接字-将数据从服务器发送到客户端

  25. 25

    将数据从Java客户端发送到Node.js服务器

  26. 26

    将文件作为块从Java客户端发送到服务器

  27. 27

    服务器如何使用Java将消息发送到客户端

  28. 28

    将完整的向量从Python客户端发送到Java服务器

  29. 29

    Java套接字-将数据从客户端发送到服务器

热门标签

归档