在浏览器上打印二进制文件

时间:2013-05-19 08:02:39

标签: java jsp file-io audio-streaming binaryfiles

我正在JSP / SERVLET中开发我的项目。 我有HTML格式的音频标签

<audio src=" player.jsp "/>

需要播放player.jsp自定义开始时间,如01:24
我希望我的player.jsp读取文件并打印出来,以便HTML音频可以读取/播放它。

我已经写了这段代码。但它没有用。

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. 如何从自定义时间开始?

1 个答案:

答案 0 :(得分: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();