<object name="Player" id="Player" width=300 height=200 classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6">
<param name="URL" value=""/>
<param name="autoStart" value="0"/>
<param name="balance" value="0"/>
<param name="baseURL" value/>
<param name="captioningID" value/>
<param name="currentPosition" value="0"/>
<param name="currentMarker" value="0"/>
<param name="defaultFrame" value="0"/>
<param name="enabled" value="1"/>
<param name="enableErrorDialogs" value="0"/>
<param name="enableContextMenu" value="1"/>
<param name="fullScreen" value="0"/>
<param name="invokeURLs" value="1"/>
<param name="mute" value="0"/>
<param name="playCount" value="1"/>
<param name="rate" value="1"/>
<param name="SAMIStyle" value/>
<param name="SAMILang" value/>
<param name="SAMIFilename" value/>
<param name="stretchToFit" value="0"/>
<param name="uiMode" value="full"/>
<param name="volume" value="100"/>
<param name="windowlessVideo" value="0"/>
</object>
这里的classid就是调用播放器的注册表,此处调用的是windowsplayer的注册表,只有IE可用
public boolean readFile(String sourceFilePath) throws IOException {
File file = new File(sourceFilePath);
BufferedInputStream inputStream = new BufferedInputStream(
new FileInputStream(file));
File file_1 = new File("D:/java/a.mp3");
if (!file_1.exists()) {
BufferedOutputStream outputStream = new BufferedOutputStream(
new FileOutputStream(file_1));
byte[] b = new byte[1024];
int len = 0;
Date date = new Date();
long speed = 0;
while ((len = inputStream.read(b)) != -1) {
outputStream.write(b, 0, len);
speed += len;
long result = new Date().getTime() - date.getTime();
if (result >= 1000) {
System.out.println("" + speed / 1024 + "KB/S");
speed = 0;
date = new Date();
}
}
System.out.println("" + speed / 1024 + "KB/S");
inputStream.close();
outputStream.flush();
outputStream.close();
return true;
} else
return false;
}
这个方法用去从服务器上下载文件到本地,播放,这里的参数sourceFilePath就是对应的网络地址,将这个方法写在Servlet里面然后在前台用ajax发post请求
现在在解决一个问题就是,如果播放的文件过大,那么就有很大的延迟,现在要解决的是网络文件边下载边播放,各位有更好的办法,希望指教指教