在 Android 上下载 YouTube

问题描述 投票:0回答:2

读完本文后:在 Java、Android 上从 Youtube 下载视频的代码

我找到了一种获取youtube下载链接的方法,与此类似: http://o-o---preferred---lax02s10---v9---lscache4.c.youtube.com/videoplayback?upn=7XKwMrZklvQ&sparams=cp%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn %2Cexpire&fexp=903903%

我尝试使用

下载视频
    public void DownloadFromUrl(String DownloadUrl, String fileName) {
    Log.i("DownloadFromUrl","DownloadFromUrl"+DownloadUrl);

       try {
               File root = android.os.Environment.getExternalStorageDirectory();               

               File dir = new File (root.getAbsolutePath() + "/youlike");
               if(dir.exists()==false) {
                    dir.mkdirs();
               }

               URL url = new URL(DownloadUrl); //you can write here any link
               File file = new File(dir, fileName);

               long startTime = System.currentTimeMillis();
               Log.d("DownloadManager", "download begining");
               Log.d("DownloadManager", "download url:" + url);
               Log.d("DownloadManager", "downloaded file name:" + fileName);


               /* Open a connection to that URL. */
               URLConnection ucon = url.openConnection();
               Log.i("URLConnection","URLConnection Succeed");

               /*
                * Define InputStreams to read from the URLConnection.
                */ 
               InputStream is = ucon.getInputStream();
               BufferedInputStream bis = new BufferedInputStream(is);
               Log.i("BufferedInputStream","BufferedInputStream Succeed");

               /*
                * Read bytes to the Buffer until there is nothing more to read(-1).
                */
               ByteArrayBuffer baf = new ByteArrayBuffer(5000);
               int current = 0;
               while ((current = bis.read()) != -1) {
                  baf.append((byte) current);
                  Log.i("ByteArrayBuffer","ByteArrayBuffer Succeed");

               }


               /* Convert the Bytes read to a String. */
               FileOutputStream fos = new FileOutputStream(file);
               Log.i("FileOutputStream","FileOutputStream initialized");
               fos.write(baf.toByteArray());
               Log.i("fos.write(baf.toByteArray());","fos.write(baf.toByteArray()); initialized");
               fos.flush();
               fos.close();
               Log.d("DownloadManager", "download ready in" + ((System.currentTimeMillis() - startTime) / 1000) + " sec");

       } catch (IOException e) {
           Log.d("DownloadManager", "Error: " + e);
       }

    }

但它返回一条错误消息给我:java.io.FileNotFoundException 我测试了该网址,我确信它有效。谁能告诉我问题出在哪里?

android youtube
2个回答
2
投票

在打开 http 连接之前,您应该对 youtube 下载链接进行编码


0
投票

难道是你没有设置外部存储的写权限? File mkdirs() 方法在 android/java 中不起作用

© www.soinside.com 2019 - 2024. All rights reserved.