Java客户端-服务器:实时流式传输音频文件

2024-01-09

我正在制作一个基于客户端-服务器的音乐应用程序,例如spotify。以下是发送一个mp3 audio file给我的客户。我想要的是向我的客户端实时播放这个 .mp3 音频文件为了实现这个目标需要改变什么?

编辑:我在 stackoverflow 和 GitHub 上看过很多类似的帖子,但我找不到任何解决方案

Server

public void send_file_to_client(String requested_file) throws IOException {
        FileInputStream fis = null;
        BufferedInputStream bis = null;

        File FILE_TO_SEND = new File("C:\\ServerMusicStorage\\" + requested_file + ".mp3");
        byte[] mybytearray = new byte[(int) FILE_TO_SEND.length()];
        try {
            fis = new FileInputStream(FILE_TO_SEND);
            bis = new BufferedInputStream(fis);

        } catch (FileNotFoundException ex) {
            Logger.getLogger(ClientHandler.class.getName()).log(Level.SEVERE, null, ex);
        }

        OutputStream os = null;
        bis.read(mybytearray, 0, mybytearray.length);
        os = connsock.getOutputStream();
        System.out.println("Sending " + FILE_TO_SEND + "(" + mybytearray.length + " bytes)");
        os.write(mybytearray, 0, mybytearray.length);
        os.flush();
    }

Client

public static void receive_file_from_server(String requested_file) throws IOException {

        File file_to_save = new File("C:\\ClientMusicStorage\\" + requested_file + ".mp3");
        int bytesRead;
        int current = 0;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        byte[] mybytearray = new byte[FILE_SIZE];
        InputStream is = clientSocket.getInputStream();
        fos = new FileOutputStream(file_to_save);
        bos = new BufferedOutputStream(fos);
        bytesRead = is.read(mybytearray, 0, mybytearray.length);
        current = bytesRead;

        do {
            bytesRead
                    = is.read(mybytearray, current, (mybytearray.length - current));
            if (bytesRead >= 0) {
                current += bytesRead;
            }
        } while (bytesRead > -1);

        bos.write(mybytearray, 0, current);
        bos.flush();
        System.out.println("File " + requested_file + ".mp3"
                + " downloaded (" + current + " bytes read)");

    }

None

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

Java客户端-服务器:实时流式传输音频文件 的相关文章

随机推荐

  • 如何在 tf.data.Dataset.map 中使用预训练的 keras 模型进行推理?

    我有一个预先训练的模型 我正在尝试构建另一个模型 该模型将前一个模型的输出作为输入 我不想端到端地训练模型 只想使用第一个模型进行推理 第一个模型的训练使用tf data Dataset管道 我的第一个倾向是将模型集成为另一个dataset
  • 使用 itextsharp 创建带有文本图像(不是 pdf)的条形码

    我可以使用 itextsharp CreateDrawingImage 方法创建条形码 但我想将实际文本包含到图像中 我怎么做 或如何使用 CreateImageWithBarcode 方法保存为图像 Jpeg Png Thanks 面对同
  • 如何避免 pyspark 表达式中出现多个窗口函数

    我希望 Spark 避免为代码中使用两次的同一个窗口对象创建两个单独的窗口阶段 如何在下面的示例中在我的代码中使用它一次 并告诉spark在单个窗口下进行求和和除法 df df withColumn colum c f sum f col
  • 带轮询器的 Spring Integration Bridge 无法按 JMS 的预期工作

    使用 spring integration 5 0 7 来限制两个 JMS 队列之间的消息桥接 文档位于 https docs spring io spring integration docs 5 0 7 RELEASE referenc
  • 更新智能表中的单元格

    我正在尝试使用 PHP 更新现有 SmartSheet 工作表中的一些单元格 添加新行没有问题 但我无法获取正确的 JSON 进行更新 我此时的代码 ch curl init https api smartsheet com 1 1 she
  • 适用于 ASP.NET 的恶意爬虫拦截器

    我刚刚偶然发现不良行为 http www bad behavior ioerror us 一个 PHP 插件 承诺通过阻止垃圾邮件和恶意爬虫访问该网站来检测它们 ASP NET 和 ASP NET MVC 是否存在类似的东西 我感兴趣的是完
  • 将 15 分钟数据重新采样为 1 分钟而不进行聚合

    我附上了基于季度的数据框的示例 我希望将其重新采样为每分钟而不进行任何聚合 输入数据框 Date CET Price 2020 01 01 11 00 50 2020 01 01 11 15 60 2020 01 01 11 15 100
  • ggplot:手动添加未映射的美观图例

    我想生成一个覆盖有点的条形图 其中两者都有单独的图例 另外 我想使用外部参数选择条形的颜色和点的大小aes 由于两者均未映射 因此不会生成图例 1 如何手动添加填充和尺寸图例 library ggplot2 d lt data frame
  • 以编程方式显示工具提示

    我开发了一个 WPF 示例项目 这是主窗口的 XAML 标记
  • 使用数据驱动测试使用 Mstest 名称代替数据行

    我使用 MsTests 和数据驱动方法进行测试 Excel是测试数据存储 测试结果不提供有关测试数据的任何信息 例如 结果如下 测试名称 数据行 5 我不清楚 如何自定义输出测试结果 例如 testname 测试数据 单词 数字或行命名 我
  • macOS Sierra Spotlight 扩展

    不幸的是 我无法在网上找到有关此主题的任何最新信息 类似于这里提出的问题 OS X Yosemite Spotlight 扩展 https stackoverflow com q 25130549 4295410 是否可以by now to
  • 在 CSS 标签后使用 HTML 来实现悬停状态

    我目前正在尝试将一些 html 传递到 css 中的 after 伪类中 以在链接悬停后添加一个箭头 我很久以前就在默认安装的 WordPress 主题中看到过这种做法 我觉得我必须错过一些简单的东西 a hover after conte
  • jQuery - 检测“x”分钟内没有任何操作并针对该事件运行函数(X 分钟内没有事件)

    如何检测用户在 X 分钟内没有执行任何操作并在此事件上运行函数 E G if no action from user for X minutes do stuff 任何建议都非常感激 现场演示 http jsfiddle net lokta
  • H2 数据库中的当前时刻

    如何获取H2数据库中实际的当前时钟时间 当前时刻 The CURRENT TIMESTAMP http h2database com html functions html current timestamp函数给出当前数据库事务开始的时刻
  • 在 odoo 8 服务器“--auto-reload”工作时

    实际上是在启动odoo 8服务器的命令中 它将提供 auto reload 选项 但实际上我不知道它是如何工作的以及何时工作 请给我一些指导 通常 如果更改 python 代码 则需要重新启动服务器才能应用新的更改 auto reload
  • 在wpf数据网格中调整列大小

    我目前正在开发一个WPF软件 我正在使用 WPF 并尝试允许列自动调整大小以适应数据网格 我使用了columnwidth 只要窗口未包含在滚动视图中 它就可以正常工作 如果它处于滚动视图中 则列的大小调整得非常大 这会导致数据网格的大小调整
  • OpenMP 中归约运算的执行顺序

    有没有办法知道 OpenMP 中归约运算符的执行顺序 换句话说 我想知道线程如何执行归约操作 是从左到右吗 当存在不是 2 的幂的数字时会发生什么 我想你会发现 OpenMP 只会减少关联操作 例如 and 如果您愿意 也可以是加法和乘法
  • 执行“pip install pycrypto”后,如何解决“没有名为‘Crypto’的模块”错误?

    基本上 我想带来Chemobot https chemistry stackexchange com users 28223 chemobot进入我自己的聊天室之一 它的创建者建议我应该运行 py我自己的机器上的脚本 我刚刚开始用 pyth
  • 我如何告诉 UserManager.FindByIdAsync(userid);包括关系?

    我使用 ASP NET Identity 和 Code First 向数据库添加了一个新属性及其相应的表 如下所示 public class ApplicationUser IdentityUser public virtual IColl
  • Java客户端-服务器:实时流式传输音频文件

    我正在制作一个基于客户端 服务器的音乐应用程序 例如spotify 以下是发送一个mp3 audio file给我的客户 我想要的是向我的客户端实时播放这个 mp3 音频文件为了实现这个目标需要改变什么 编辑 我在 stackoverflo