0

我正在 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. 如何从自定义持续时间开始?
4

1 回答 1

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();
于 2013-05-19T10:07:01.833 回答