第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如果傳輸狀態(tài)為 206 部分內(nèi)容,Chrome 將無法加載視頻

如果傳輸狀態(tài)為 206 部分內(nèi)容,Chrome 將無法加載視頻

萬千封印 2023-04-26 14:24:49
我正在制作一個(gè)簡單的 Javacom.sun.net.httpserver.HttpServer來提供靜態(tài)視頻文件。如果我返回狀態(tài)代碼 206,部分內(nèi)容,當(dāng)我嘗試通過瀏覽器訪問它時(shí),視頻無法播放(狀態(tài)代碼為 200 的視頻播放正常,但我希望能夠搜索和循環(huán)播放視頻),這是我的HttpHandler:final String path = StaticHandler.toPathSafe(httpExchange.getRequestURI().getPath());System.out.println(path);final File file = new File(path);if (file.isFile()){    int code = 200;    long position = 0L;    long end = file.length();    if (httpExchange.getRequestHeaders().containsKey("Range"))    {        try        {            long[] range = StaticHandler.parseRange(httpExchange.getRequestHeaders().get("Range").get(0));            position = range[0];            if (range[1] != -1)                end = range[1];            // the video loads fine when code = 200;            code = 206;            httpExchange.getResponseHeaders().set("Content-Range", "bytes " + position + "-" + end + "/" + file.length());        }        catch (Exception e)        {            e.printStackTrace();        }    }    httpExchange.getResponseHeaders().set("Accept-Range", "bytes");    httpExchange.getResponseHeaders().set("Content-Type", "video/mp4");    httpExchange.getResponseHeaders().set("Content-Length", String.valueOf(end - position));    System.out.println("Response: " + position + ", " + end);    httpExchange.sendResponseHeaders(code, 0L);    final FileChannel fileChannel = new FileInputStream(file).getChannel();    final WritableByteChannel responseChannel = Channels.newChannel(response.getOutputStream());    fileChannel.transferTo(position, end - position, responseChannel);    responseChannel.close();    fileChannel.close();}else{    System.out.println("404");    httpExchange.sendResponseHeaders(404, -1);}上面的代碼無法在 chrome 上加載,但在 firefox 中工作正常,這是我在 Chrome 中獲得的標(biāo)頭:Response Headers:Accept-range: bytesContent-length: 31491166Content-range: bytes 0-31491166/31491166Content-type: video/mp4Date: Sat, 27 Jul 2019 14:32:55 GMTTransfer-encoding: chunked我是否遺漏了什么和/或我的代碼有什么問題?
查看完整描述

2 回答

?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

范圍包括開始到結(jié)束。不是起始長度

例如:

Content-range: bytes 0-0/31491166

返回 1 個(gè)字節(jié)(從字節(jié)零到字節(jié)零)

您的代碼不起作用,因?yàn)闉g覽器正在等待一個(gè)從未發(fā)送過的字節(jié)。


查看完整回答
反對(duì) 回復(fù) 2023-04-26
?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用下面的代碼片段。它在所有瀏覽器Safari、Firefox 和 Chrome上運(yùn)行和測(cè)試。


protected byte[] prepareContent(final HttpHeaders headers, byte[] media,

        String range) throws IOException {

    

    long rangeStart = 0;

    long rangeEnd;


    long fileSize = media.length;

    String[] ranges = range.split("-");

    rangeStart = Long.parseLong(ranges[0].substring(6));


    if (ranges.length > 1) {

        rangeEnd = Long.parseLong(ranges[1]);

    } else {

        rangeEnd = fileSize - 1;

    }

    if (fileSize < rangeEnd) {

        rangeEnd = fileSize - 1;

    }

    

    String contentLength = String.valueOf((rangeEnd - rangeStart) + 1);

    

    headers.add("Content-Length", contentLength);

    headers.add("Content-Range", "bytes " + rangeStart + "-" + rangeEnd + "/" + fileSize);

    headers.add("Content-Type", "video/mp4");

    headers.add("Accept-Ranges","bytes");

    return readByteRange(media, rangeStart, rangeEnd);

}


private byte[] readByteRange(byte[] media, long start, long end) throws IOException {

    

    try (InputStream inputStream = new ByteArrayInputStream(media);

         ByteArrayOutputStream bufferedOutputStream = new ByteArrayOutputStream()) {

        

        int nRead;

        while ((nRead = inputStream.read(media, 0, media.length)) != -1) {

            bufferedOutputStream.write(media, 0, nRead);

        }

        bufferedOutputStream.flush();

        byte[] result = new byte[(int) (end - start) + 1];

        System.arraycopy(bufferedOutputStream.toByteArray(), (int) start, result, 0, result.length);

        return result;

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-04-26
  • 2 回答
  • 0 關(guān)注
  • 971 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)