1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          利用Java實現從網上下載視頻

          來源:互聯網轉載 時間:2024-01-29 08:00:18

          用Java的IO流可以實現從網上下載視頻,當然用Python更簡單,就是三五行代碼的事情。。。。

          代碼思路

          先建立一個鏈接對象,獲取到網頁的鏈接;從鏈接對象獲取到輸入流,讀取數據;建立一個輸出流,向本地文件寫入數據。

          代碼步驟

          1.URL url = new URL(videoUrl);就是獲取URL的資源對象,傳入的字符串就是對應的地址;2.HttpURLConnection connection = url.openConnection();是獲取鏈接對象,就是靠這個對象來獲取流;3.connection.setrequestproperty("Range","bytes=0-");Range代表讀取的范圍,bytes=0-代表從0字節到最大字節,意味著讀取所有資源4.connection.connect();與網頁建立李鏈接,鏈接成功后就可以獲得流;5.connection.getResponseCode() / 100 != 2這一個判斷代表的是,如果建立鏈接返回的相應代碼是200到300間就為成功,否則鏈接失敗6.InputStream inputStream = connection.getInputStream();獲取流只需要一行代碼,從連接對象直接get。7.String fileName = url.getFile();獲取文件名稱。8.RandomAccessFile randomAccessFile = new RandomAccessFile(fileName,"rw");采用RandomAccessFile建立文件寫入對象。

          代碼大致步驟就是這樣,沒什么技術難度。全部源代碼如下:

          import java.io.IOException;import java.io.InputStream;import java.io.RandomAccessFile;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/**   * 下載視頻   * @param videoUrl 實際視頻地址   * @param downloadPath  文件下載地址   * @param fileName  文件名   * @param SuffixName  后綴名   */  public static void downVideo(String videoUrl, String downloadPath,String fileName, String SuffixName) {    HttpURLConnection connection = null;    InputStream inputStream = null;    RandomAccessFile randomAccessFile = null;        //路徑名加上文件名加上后綴名 = 整個文件下載路徑    String fullPathName = downloadPath+fileName+"."+SuffixName;        try {      // 1.獲取連接對象      URL url = new URL(videoUrl);      // 獲取鏈接對象,就是靠這個對象來獲取流      connection = (HttpURLConnection) url.openConnection();      // Range代表讀取的范圍,bytes=0-代表從0字節到最大字節,意味著讀取所有資源      connection.setRequestProperty("Range", "bytes=0-");      // 與網頁建立鏈接,鏈接成功后就可以獲得流;      connection.connect();      // 如果建立鏈接返回的相應代碼是200到300間就為成功,否則鏈接失敗,結束函數      if (connection.getResponseCode() / 100 != 2) {        System.out.println("連接失敗...");        return;      }      // 2.獲取連接對象的流      inputStream = connection.getInputStream();      // 已下載的大小 下載進度      int downloaded = 0;      // 總文件的大小      int fileSize = connection.getContentLength();      // getFile獲取此URL的文件名。返回的文件部分將與getPath()相同,具體視頻鏈接的文件名字視情況而定      // String fileName = url.getFile();      // fileName = fileName.substring(fileName.lastIndexOf("/") + 1);//特殊需要截取文件名字      // 3.把資源寫入文件      randomAccessFile = new RandomAccessFile(fullPathName, "rw");      while (downloaded < fileSize) {        // 3.1設置緩存流的大小        //判斷當前剩余的下載大小是否大于緩存之,如果不大于就把緩存的大小設為剩余的。        byte[] buffer = null;        if (fileSize - downloaded >= MAX_BUFFER_SIZE) {          buffer = new byte[MAX_BUFFER_SIZE];        } else {          buffer = new byte[fileSize - downloaded];        }        // 3.2把每一次緩存的數據寫入文件        int read = -1;        int currentDownload = 0;        long startTime = System.currentTimeMillis();        // 這段代碼是按照緩存的大小,讀寫該大小的字節。然后循環依次寫入緩存的大小,直至結束。        // 這樣的優勢在于,不用讓硬件頻繁的寫入,可以提高效率和保護硬盤吧        while (currentDownload < buffer.length) {          read = inputStream.read();          buffer[currentDownload++] = (byte) read;        }        long endTime = System.currentTimeMillis();        double speed = 0.0; //下載速度        if (endTime - startTime > 0) {          speed = currentDownload / 1024.0 / ((double) (endTime - startTime) / 1000);        }        randomAccessFile.write(buffer);        downloaded += currentDownload;        randomAccessFile.seek(downloaded);        System.out.printf(fullPathName+"下載了進度:%.2f%%,下載速度:%.1fkb/s(%.1fM/s)%n", downloaded * 1.0 / fileSize * 10000 / 100,            speed, speed / 1000);      }    } catch (MalformedURLException e) {// 具體的異常放到前面      e.printStackTrace();    } catch (IOException e) {      e.printStackTrace();    } finally {      try {        //關閉資源、連接        connection.disconnect();        inputStream.close();        randomAccessFile.close();      } catch (IOException e) {        e.printStackTrace();      }    }  }

          控制臺輸出結果:

          下載了進度:11.59%,下載速度:388.0kb/s(0.4M/s)下載了進度:23.19%,下載速度:262.5kb/s(0.3M/s)下載了進度:34.78%,下載速度:261.0kb/s(0.3M/s)下載了進度:46.38%,下載速度:258.3kb/s(0.3M/s)下載了進度:57.97%,下載速度:260.0kb/s(0.3M/s)下載了進度:69.57%,下載速度:260.9kb/s(0.3M/s)下載了進度:81.16%,下載速度:257.4kb/s(0.3M/s)下載了進度:92.75%,下載速度:252.3kb/s(0.3M/s)下載了進度:100.00%,下載速度:286.5kb/s(0.3M/s)
          標簽:java視頻下載-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          399美元等于多少人民幣?在今天的場外交易中,匯率為人民幣=101393.039]=RMB=101387.039=287.039美元]=287.039美元=287.039美元]=287.039美元]=397.039美元]=RMB=287.039美元]=287.039.039美元]=287美元]=397.039.039美元]=RMB=1039.039.039美元...

          怎樣在《紅警》里聯機?1. 首先,我們打開紅色警報2游戲,界面如下2。然后選擇選項,出現如下界面3。然后點擊網絡進入設置頁面4。設置目標網絡,兩臺聯機計算機設置為00.00.00。5. 點擊確定進入主界面,點擊網絡,即可加入局域網游戲。1. 鼠標右鍵是一個快速移動的界面。2. 設置team Ctrl 0-9,從當前選定的單元創建一個0-9的團隊。3. 選擇團隊0-9選擇您設置的團隊。4. 添加選擇...

          計算機二級怎么注冊ETEST賬號?1. 首先,打開手機瀏覽器,打開主頁面上的搜索欄,輸入全國計算機等級考試報名系統,點擊第一個即可顯示結果。2. 進入注冊系統界面,在那里你將被要求注冊你的Etest通行證。讓我們單擊下面的-用戶注冊。3. 進入注冊頁面:電子郵件和手機號碼可以作為您的登錄賬號;密碼長度為8-18個字符,必須同時包含字母、數字和特殊字符5。提交后,將顯示一個對話框,以檢查電子郵件和手...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>