亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于JSP的流媒體播放的設(shè)計(jì)與實(shí)現(xiàn)

        2016-11-02 23:11:31楊子祥林鵬
        電腦知識(shí)與技術(shù) 2016年18期
        關(guān)鍵詞:流媒體

        楊子祥 林鵬

        摘要:隨著Internet的發(fā)展,網(wǎng)頁(yè)視頻播放的使用越來越多。但是,目前如果直接通過HTML5的

        3 基于JSP的在線流媒體播放的實(shí)現(xiàn)

        在第二節(jié)中,本文通過Chrome的Http包的追蹤功能,截取了視頻在播放控制過程中不同播放位置請(qǐng)求的包。通過圖2、圖3和圖4的追蹤結(jié)果可以看到他們的Request Headers以及Response Headers中的部分頭文件字段是不同的,具體的信息比較如表1所示。

        由表1中可以看到,三個(gè)圖中的Http包中只有Range、Content-Range字段是不同的,其他的字段的內(nèi)容根本就沒有發(fā)生變化。其中,Range是Request Headers中的字段,Content-Range是Response Headers中的字段。在表1中還可以發(fā)現(xiàn),Content-Range字段的內(nèi)容和Range字段的內(nèi)容有一定的關(guān)系;Content-Range內(nèi)容中“-”前的數(shù)值和Range是一致的。同時(shí),在表1中也可以發(fā)現(xiàn),Content-Range字段和Content-Length字段有一定的關(guān)系;Content-Range內(nèi)容中“/”后的數(shù)值和Content-Length是一致的。我們知道,Http包中的Content-Length的作用主要是記錄文件的長(zhǎng)度,因此可以在服務(wù)器端通過程序求出文件的大小。

        由于Http包中的Request Headers是由瀏覽器進(jìn)行發(fā)出并封裝的,因此本文的程序無法控制包中的Request Headers內(nèi)容。但是,Http包中的Response Headers是由服務(wù)器封裝后返回給瀏覽器的;因此,本文的程序設(shè)計(jì)將會(huì)根據(jù)Http包中的Request Headers字段內(nèi)容,對(duì)Http包中的Response Headers字段進(jìn)行封裝返回給服務(wù)器。根據(jù)以上的分析,本文通過JSP進(jìn)行程序設(shè)計(jì)如下:

        @RequestMapping(value = { "/videos/{path}" })

        public String displayVideo(HttpServletRequest request,

        HttpServletResponse response, @PathVariable String path) {

        try {String filePath = videoDir + path + ".mp4";

        File file = new File(filePath);

        if (!file.exists()) {

        response.sendError(404);

        LOG.error("未找到文件" + file.getCanonicalPath());}

        Long fileLength = file.length();

        LOG.debug("文件找到了,大小為" + fileLength);

        String range = request.getHeader("range");

        if (range != null && !range.equals("")) {

        LOG.debug("請(qǐng)求的名字是range,內(nèi)容是" + range); }

        Long startPos = 0l;

        if (range != null && !range.equals("")) {

        Pattern pattern = Pattern

        .compile("^bytes\\=(\\d+)(?:\\-(\\d+)?)?$");

        Matcher matcher = pattern.matcher(range);

        LOG.debug(matcher.matches());

        startPos = Long.parseLong(matcher.group(1), 10);

        LOG.debug("成功截獲range,開始位置是" + startPos);

        response.setStatus(206);

        } else {

        response.setStatus(200);

        LOG.debug("從頭開始傳送");}

        InputStream is = new FileInputStream(file);

        OutputStream os = response.getOutputStream();

        byte[] buffer = new byte[1024];

        response.addHeader("Content-Range", "bytes " + startPos + "-"

        + (fileLength - 1) + "/" + fileLength);

        response.addHeader("Content-Length", fileLength.toString());

        response.setCharacterEncoding("UTF-8");

        response.setContentType("video/mp4");

        response.setHeader("Accept-Ranges", "bytes");

        is.skip(startPos);

        int length = is.read(buffer);

        while (length > 0) {

        os.write(buffer, 0, length);

        length = is.read(buffer); }

        os.flush();

        os.close();

        is.close();

        } catch (Exception err) {

        if (err.getClass()

        .getName()

        .equals("org.apache.catalina.connector.ClientAbortException")) {

        LOG.debug("客戶掛斷了");

        } else {

        err.printStackTrace();}}

        return null; }

        在本文的程序設(shè)計(jì)中,瀏覽器的視頻請(qǐng)求URL路徑的后端是通過JSP中的Spring框架進(jìn)行控制,在路徑中的/videos/{paths}即是視頻路徑存儲(chǔ)在磁盤的相對(duì)位置;在程序中,視頻的讀取并沒有經(jīng)過中間的流媒體服務(wù)器,而是直接讀取在磁盤中的視頻文件。經(jīng)過程序發(fā)布在Tomcat7上測(cè)試之后,視頻在播放的過程中,用戶可以根據(jù)需求隨意拖拽,解決了Html5中

        4 結(jié)論

        本文通過分析Windows Media Services流媒體服務(wù)器中視頻拖拽播放控制過程中,Chrome瀏覽器發(fā)送的Http包的信息,得出了瀏覽器播放視頻時(shí)播放控制和Http包中Request Headers、Response Headers頭文件的關(guān)系。并且,本文通過JSP程序語言的設(shè)計(jì),成功實(shí)現(xiàn)了流媒體服務(wù)器控制視頻播放的原理。本文設(shè)計(jì)的程序發(fā)布到Tomcat后,經(jīng)過該程序訪問的視頻都可以在瀏覽器端隨意拖拽播放視頻,解決了Html5的

        參考文獻(xiàn):

        [1] 蔣太杰. Windows Media Services及其在遠(yuǎn)程教育中的應(yīng)用[J]. 指揮技術(shù)學(xué)院學(xué)報(bào), 2001, 12(6): 81-85.

        [2] 王雪婷, 于勇. Windows Media Services流媒體技術(shù)與實(shí)現(xiàn)[J]. 信息技術(shù)與信息化, 2006(1): 51-53+64.

        [3] 李學(xué)俊. Windows Media Services及其在遠(yuǎn)程教育中的應(yīng)用[J]. 現(xiàn)代遠(yuǎn)程教育研究, 2002(3): 27-29.

        [4] 高劍. 利用Windows Media流媒體技術(shù)構(gòu)建網(wǎng)絡(luò)直播系統(tǒng)[J]. 中國(guó)高新技術(shù)企業(yè), 2010(30): 62-64.

        猜你喜歡
        流媒體
        流媒體傳輸加密技術(shù)研究
        網(wǎng)絡(luò)遠(yuǎn)程教學(xué)系統(tǒng)的設(shè)計(jì)
        基于云服務(wù)的P2P流媒體技術(shù)在遠(yuǎn)程教學(xué)視頻傳輸中的應(yīng)用
        基于RTMFP協(xié)議的視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        最新国产在线精品91尤物| 少妇又色又爽又刺激的视频| 成人在线视频亚洲国产| 日本在线无乱码中文字幕| 高清少妇二区三区视频在线观看| 人妻少妇久久中中文字幕| 人妻少妇中文字幕在线| 午夜毛片不卡免费观看视频| 国产精品无码成人午夜电影| 亚洲 高清 成人 动漫| 四虎影视亚洲精品| 九九日本黄色精品视频| 风流少妇一区二区三区91| 亚洲国产精品久久久av| 人妻仑乱a级毛片免费看| 久久无码专区国产精品s| 亚洲一区二区在线| av网页在线免费观看| 蓝蓝的天空,白白的云| 欲求不満の人妻松下纱荣子 | 亚洲一二三四五中文字幕| 国产精品乱码人妻一区二区三区| 精品无码国产自产拍在线观看蜜| 精品国产黑色丝袜高跟鞋| 亚洲欧美日韩国产一区二区精品| 久久亚洲av午夜福利精品西区| 国产老熟女伦老熟妇露脸| 亚洲日韩精品一区二区三区| 欧美成人一区二区三区在线观看 | 91尤物在线看| 亚洲福利网站在线一区不卡| 国产av无码专区亚洲av麻豆| 激烈的性高湖波多野结衣| 中出内射颜射骚妇| 无码AV午夜福利一区| 色婷婷久色国产成人免费| 给你免费播放的视频| 女人被狂躁到高潮视频免费网站| 4444亚洲人成无码网在线观看 | 久久精品国产精品青草| 在教室伦流澡到高潮hgl视频 |