乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當(dāng)前位置:首頁 >  站長 >  編程技術(shù) >  正文

      解決html5中的video標(biāo)簽ios系統(tǒng)中無法播放使用的問題

       2021-02-24 17:33  來源: 腳本之家   我來投稿 撤稿糾錯(cuò)

        阿里云優(yōu)惠券 先領(lǐng)券再下單

      這篇文章主要介紹了解決html5中的video標(biāo)簽ios系統(tǒng)中無法播放使用的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

      1.先是從前端的角度去考慮,如何讓safari瀏覽器兼容video,并支持播放(未找到解決的方法)。

      2.經(jīng)多次查找網(wǎng)上信息,發(fā)現(xiàn)使用后臺能解決該問題,解決點(diǎn)在HTTP協(xié)議的響應(yīng)頭里面(Accept-Ranges)。

      3.safari瀏覽器,在打開視頻的時(shí)候,先是發(fā)送一個(gè)請求探測文件的大小,之后再多次發(fā)送請求分段獲取數(shù)據(jù)流的數(shù)據(jù)(個(gè)人理解大概是分段下載,Accept-Ranges)。

      4.想要解決這種問題要考慮兩個(gè)方面:

      a.需要根據(jù)請求內(nèi)容的不同做出不同的響應(yīng),第一次探測請求需要返回200,后面的請求需要返回206和具體數(shù)據(jù)

      b.contentType必須設(shè)置為video/mp4

      5.具體代碼

      這里已經(jīng)封裝好了,直接拿過來使用就ok了。

      private void sendVideo(HttpServletRequest request, HttpServletResponse response, File file, String fileName) throws FileNotFoundException, IOException {
      RandomAccessFile randomFile = new RandomAccessFile(file, "r");//只讀模式
      long contentLength = randomFile.length();
      String range = request.getHeader("Range");
      int start = 0, end = 0;
      if(range != null && range.startsWith("bytes=")){
      String[] values = range.split("=")[1].split("-");
      start = Integer.parseInt(values[0]);
      if(values.length > 1){
      end = Integer.parseInt(values[1]);
      }
      }
      int requestSize = 0;
      if(end != 0 && end > start){
      requestSize = end - start + 1;
      } else {
      requestSize = Integer.MAX_VALUE;
      }

      response.setContentType("video/mp4");
      response.setHeader("Accept-Ranges", "bytes");
      response.setHeader("ETag", fileName);
      response.setHeader("Last-Modified", new Date().toString());
      //第一次請求只返回content length來讓客戶端請求多次實(shí)際數(shù)據(jù)
      if(range == null){
      response.setHeader("Content-length", contentLength + "");
      }else{
      //以后的多次以斷點(diǎn)續(xù)傳的方式來返回視頻數(shù)據(jù)
      response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);//206
      long requestStart = 0, requestEnd = 0;
      String[] ranges = range.split("=");
      if(ranges.length > 1){
      String[] rangeDatas = ranges[1].split("-");
      requestStart = Integer.parseInt(rangeDatas[0]);
      if(rangeDatas.length > 1){
      requestEnd = Integer.parseInt(rangeDatas[1]);
      }
      }
      long length = 0;
      if(requestEnd > 0){
      length = requestEnd - requestStart + 1;
      response.setHeader("Content-length", "" + length);
      response.setHeader("Content-Range", "bytes " + requestStart + "-" + requestEnd + "/" + contentLength);
      }else{
      length = contentLength - requestStart;
      response.setHeader("Content-length", "" + length);
      response.setHeader("Content-Range", "bytes "+ requestStart + "-" + (contentLength - 1) + "/" + contentLength);
      }
      }
      ServletOutputStream out = response.getOutputStream();
      int needSize = requestSize;
      randomFile.seek(start);
      while(needSize > 0){
      byte[] buffer = new byte[4096];
      int len = randomFile.read(buffer);
      if(needSize < buffer.length){
      out.write(buffer, 0, needSize);
      } else {
      out.write(buffer, 0, len);
      if(len < buffer.length){
      break;
      }
      }
      needSize -= buffer.length;
      }
      randomFile.close();
      out.close();

      }

      總結(jié)

      到此這篇關(guān)于解決html5中的video標(biāo)簽ios系統(tǒng)中無法播放使用的問題的文章就介紹到這了,更多相關(guān)html5中的video標(biāo)簽ios系統(tǒng)無法播放內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

      來源:腳本之家

      鏈接:https://www.jb51.net/html5/739765.html

      申請創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

      相關(guān)標(biāo)簽
      html5

      相關(guān)文章

      • Html5移動(dòng)端div固定到底部實(shí)現(xiàn)底部導(dǎo)航條的幾種方式

        這篇文章主要介紹了Html5移動(dòng)端div固定到底部實(shí)現(xiàn)底部導(dǎo)航條的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        標(biāo)簽:
        html5
      • HTML5拖拽文件上傳的示例代碼

        這篇文章主要介紹了HTML5拖拽文件上傳的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        標(biāo)簽:
        html5
      • HTML5 層的疊加的實(shí)現(xiàn)

        這篇文章主要介紹了HTML5層的疊加的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        標(biāo)簽:
        html5
      • HTML5 背景的顯示區(qū)域?qū)崿F(xiàn)

        這篇文章主要介紹了HTML5背景的顯示區(qū)域?qū)崿F(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        標(biāo)簽:
        html5
      • html5關(guān)于外鏈嵌入頁面通信問題

        這篇文章主要介紹了html5關(guān)于外鏈嵌入頁面通信問題(postMessage解決跨域通信),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

        標(biāo)簽:
        html5

      熱門排行

      信息推薦