JavaWeb向浏览器返回一个音频流

浏览器直接播放音频文件,1是直接访问一个html的音频文件,,2 是返回一个Java音频流给浏览器解析.

下面实现一个java的wav文件音频流,可以直接播放音频文件

 1 package org.lib.speech.test;
 2 import javax.servlet.http.HttpServlet;
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 import java.io.*;
 6
 7 public class Music extends HttpServlet {
 8
 9     public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
10         // 设置响应内容类型
11
12          response.setHeader("Content-type", "text/html; charset=UTF-8");
13          request.setCharacterEncoding("UTF-8");//解决乱码
14          response.setContentType("text/html;charset=UTF-8");//解决乱码
15          String sentences=request.getParameter("text");
16         try {
17             sayPlay(sentences,request,response);
18         }catch (Exception e){
19             System.out.printf(e.getMessage());
20         }
21
22     }
23
24     public static void sayPlay (String sentences,HttpServletRequest request,HttpServletResponse response) throws Exception{
25         //获取tomcat 路径
26         String ROOT = System.getProperty("catalina.home")+"\\webapps\\JavaWeb\\test.wav";
27         //输出 wav IO流
28         try{
29             response.setHeader("Content-Type", "audio/mpeg");
30             File file = new File(ROOT);
31             int len_l = (int) file.length();
32             byte[] buf = new byte[2048];
33             FileInputStream fis = new FileInputStream(file);
34             OutputStream out = response.getOutputStream();
35             len_l = fis.read(buf);
36             while (len_l != -1) {
37                 out.write(buf, 0, len_l);
38                 len_l = fis.read(buf);
39             }
40             out.flush();
41             out.close();
42             fis.close();
43         }catch (Exception e){
44             System.out.println(e);
45         }
46
47
48     }

原文地址:https://www.cnblogs.com/wtcl/p/8151489.html

时间: 2024-10-10 08:25:04

JavaWeb向浏览器返回一个音频流的相关文章

浏览器的一个请求从发送到返回都经历了什么?

浏览器输入url经历图 分析过程: 1.用户输入url,浏览器内部代码将url进行拆分解析 url解析图 2.浏览器首先去找本地的hosts文件,检查在该文件中是否有相应的域名.IP对应关系,如果有,则向其IP地址发送请求,如果没有就会将domain(域)发送给 dns(域名服务器)进行解析(解析如下图),将域名解析成对应的服务器IP地址,发回给浏览器 DNS解析domian过程图 注释:(结合上图看) 浏览器客户端向本地DNS服务器发送一个含有域名www.cnblogs.com的DNS查询报文

解决IOS微信内置浏览器返回后不执行js脚本的问题

在A页面写一个$(function(){}) 后随便点击一个URL跳转到B页面 利用微信内置浏览器 返回键返回到A页面后发现这段JS不执行,后来找到了解决方案 $(function () { var isPageHide = false; window.addEventListener('pageshow', function () { if (isPageHide) { window.location.reload(); } }); window.addEventListener('pageh

从浏览器输入一个网址,到该页面显示完成,都发生了那些事情?

平常上百度输入www.baidu.com,上google输入www.google.com,之后弹出页面.鬼知道他们经历了什么. 于是开始上网收搜集一些资料,自己总结了一下,其大概流程为: 1.浏览器解析链接执行页面的url 2.浏览器向DNS请求解析www.baidu.com的IP地址 3.域名系统DNS解析出IP为14.215.177.37 4.浏览器与服务器建立起TCP链接(14.215.177.37:80) 5.浏览器初始化一个指向Web容器(类似于Tomcat)的HTTP请求 6.Web

Entity Framework 6 Recipes 2nd Edition(11-1)译 -> 从“模型定义”函数返回一个标量值

第11章函数 函数提供了一个有力代码复用机制, 并且让你的代码保持简洁和易懂. 它们同样也是EF运行时能利用的数据库层代码.函数有几类: Rowset Functions, 聚合函数, Ranking Functions, 和标量值函数. 函数要么确定,要么不确定.当用一些指定的值调用函数,而函数返回的结果总是一样时,它就是确定的函数.当甚至用同样的一些值调用时,而函数每次返回的结果也可能不一样,它就是不确定的函数. 在前七小节,我们探讨“模型定义”的函数,这些函数允许我们在概念层上创建.这些函

网页提交,点击浏览器返回按钮,网页出错

这两天公司新项目写一个问卷调查小功能,当时因为问题都是循环进行展示提交,所以写到一个php文件中,但是完成后进行测试,当一路点击提交代码结果显示正常,但是当问卷到第三页时点击浏览器返回按钮,网页直接报错,瞬间懵逼啊!没有任何日志!代码如下: <?php if(!isset($_SESSION)) { session_start(); } $_SESSION['username'] = "zhangminchao"; $data1 = '{"paper":{&q

通过浏览器访问一个网站的背后到底经历了什

通过浏览器访问一个网站的背后到底经历了什么 HTTP-Principle-01 前言 来吧,随我一起来整理下HTTP与DNS协议吧,无论你是Dev or Ops这些都是你必须要知道的基础网络知识,如上图所示,我们把用户访问网站的流程大概分为了两大部分: DNS(用于解析域名的IP地址) HTTP(得到IP地址之后从服务器获取数据) 基于上面的两个点,就让我么来深刻的讨论下到底什么是DNS and HTTP把. What is DNS? 域名系统(Domain Name System,缩写:DNS

浏览器访问一个网站的背后到底经历了什么?

如题,通过浏览器访问一个网站的背后到底经历了什么? 内容来自:https://www.cnblogs.com/yangliheng/p/6112955.html 前言 来吧,随我一起来整理下HTTP与DNS协议吧,无论你是Dev or Ops这些都是你必须要知道的基础网络知识,如上图所示,我们把用户访问网站的流程大概分为了两大部分: DNS(用于解析域名的IP地址) HTTP(得到IP地址之后从服务器获取数据) 基于上面的两个点,就让我么来深刻的讨论下到底什么是DNS and HTTP把. Wh

vue,vue-router实现浏览器返回不刷新页面

当我们在写单页应用的时候,前端路由采用vue-router实现,如果从页面A跳到页面B,然后点浏览器返回,返回到页面A时,页面会刷新.最近遇到一个需求,一个列表页,用户会根据条件进行筛选,也可以翻页,当用户筛选后点击具体的某一个条目时,进入详情页查看编辑详情,用户点击返回时,希望之前页面的筛选条件也能够保留.查找相关资料,vue中有个keep-alive组件可以对组件进行缓存,这样当页面返回时就不会刷新页面. <keep-alive> <router-view></route

禁止浏览器返回登入页面

目前很多项目都没有特意做这个处理,就是浏览器返回到登入页面,然后点击下一页箭头,可以进入,但是如果有这个需求只需要在禁止的那个页面,输入如下代码即可 <script> $(document).ready(function (e) { var counter = 0; if (window.history && window.history.pushState) { $(window).on('popstate', function () { window.history.pus