2013-05-19 42 views
0

我正在JSP/SERVLET中开发我的项目。 我在HTML音频标签从定制开始时间01:24一样
发挥我希望我的player.jsp读取文件并打印,使HTML音频可以阅读在浏览器上打印二进制文件

<audio src=" player.jsp "/> 

player.jsp需要/播放。

我已经写了这段代码。但它不起作用。

response.setHeader("Content-Type","audio/mpeg"); 
String path1 = "C:\\1.mp3"; 
File fileFileName = new File(path1); 

InputStream in = new FileInputStream(path1); 
long length = fileFileName.length(); 

byte[] bytes = new byte[(int) length]; 

int offset = 0; 
int numRead = 0; 

while (offset < bytes.length && (numRead = in.read(bytes, offset, bytes.length - offset)) >= 0) { 
    offset += numRead; 
} 
    String file = new String(bytes); 
    out.println(file); 

请大家帮帮我:

  1. 让这段代码的工作?
  2. 如何查找mp3文件的持续时间?
  3. 如何从自定义持续时间开始?
+0

您需要了解更多关于HTML。音频和图像不能通过在HTML中打印获得。它们通过单独的资源提供。 – Raedwald

回答

0

从定做的音频播放起始时间的最简单方法是使用JavaScript API:

<audio id="player" src="player.jsp" type="audio/mpeg" data-start-time="45"> 
    Audio not supported 
</audio> 
<script type="text/javascript"> 
    var player = document.getElementById('player'); 
    player.currentTime = player.getAttribute('data-start-time'); 
    player.play(); 
</script> 

脚本播放器加载后会运行和跟踪当前的时间设定为45秒。请注意,我将开始时间移至自定义属性,因此可以使用JSTL动态设置它:data-start-time="${startTimeSec}

也可以使用JavaScript获取完整的剪辑持续时间。就前面的例子而言,它属于player.duration属性。

最后,如果你要使用动态音频加载一个servlet,你应该为你现在要做的返回字节输出流,而不是一个字符串。

OutputStream out = response.getOutputStream(); 
out.write(bytes, 0, numRead); 
out.flush(); 
out.close();