支持提交http://domain/flvfile.flv?show&start=number1&end=number2參數(shù)拖放的FLV播放器,
修改播放器,支持播放時(shí)僅下載需要的幾分鐘視頻,測(cè)試地址:
http://www.baowei.org/flv/flv.html http://www.baowei.org/flv/m4v.html
flv文件需要經(jīng)過(guò)FLVMDI等工具添加了“關(guān)鍵幀”對(duì)象。
支持FLV視頻在線快速拖放的java服務(wù)器端代碼,Servlet程序。
package org.baowei.cdn;
imp
imp
imp
imp
imp
imp
public class flv extends HttpServlet {
public flv() {
}
public void doGet(HttpServletRequest request,HttpServletResponse response) {
booleanrightCookie = false;
Cookie[]cookies = request.getCookies();
if(request.getHeader("x-flash-version") != null && cookies !=null) {
P: for (int i = 0; i <cookies.length; i++) {
if(cookies[i].getName().startsWith("webMaster")) {
// 防止盜鏈
rightCookie= true;
break P;
}
}
}
exit:if (rightCookie) {
// format:
// http://127.0.0.1:8080/cdn/flv?httpurl=http://www.baowei.org/flvfiles/a.flv?show&start=123&end=456
String httpurl = "", localfile = "";
int start = 0, end = 0;
RandomAccessFile raf = null;
try {
httpurl= new String(request.getParameter("httpurl").getBytes(
"ISO8859_1"), "GBK");
if (httpurl.lastIndexOf("?show") == -1) {
break exit;
} else
localfile= "/squid2/"
+httpurl.substring(7, httpurl.length() - 5);
try {
start =Integer.parseInt(request.getParameter("start"));
} catch (Exception e0) {
}
try{
end =Integer.parseInt(request.getParameter("end"));
} catch (Exception e0) {
}
response.reset();
response.setContentType("video/x-flv");
raf= new RandomAccessFile(localfile, "r");
int length = (int) raf.length();
if (end == 0)
length =length - start;
else
length = end - start;
// 當(dāng)不是從頭讀起時(shí),Add Flv header!
byte[] da
0, 0, 9};
if (start > 0) {
response.setContentLength(length + 13);
response.getOutputStream().write(da
} else
response.setContentLength(length);
da
raf.skipBytes(start);
for (int j = 0; j < length / 1024;j++) {
raf.read(da
response.getOutputStream().write(da
}
da
raf.read(da
response.getOutputStream().write(da
response.getOutputStream().flush();
} catch (FileNotFoundException e1) {
try {
//資源文件不存在,跳轉(zhuǎn)到源站。
response.sendRedirect("http://src_" + httpurl.substring(7)
+ "?show&start=" + start +"&end=" + end);
} catch(Exception e2) {
}
} catch (Exception e3) {
} finally {
try {
raf.close();
} catch (Exception e4) {
}
}
} else {
try {
// 盜鏈URL跳轉(zhuǎn)
response.sendRedirect(" } catch (Exception e5) { } } this.destroy(); } }
聯(lián)系客服