2015-01-12 4 views
0

У нас есть требование загрузить видео из Google +/picasa и сохранить его на SD-карте. Не могли бы вы помочь мне решить эту проблему? Google +/Picasaвидео скачать с google +/picasa android

enter image description here

Преобразование из URI в byte[], то byte[] сохраняется в файл:

InputStream videoStream = getActivity().getContentResolver().openInputStream(videoUri); 
byte bytes[] = ByteStreams.toByteArray(videoStream); 
videoFile = new File("abcd.mp4"); 
FileOutputStream out = new FileOutputStream(videoFile); 
out.write(bytes); 
out.close(); 
+0

Пожалуйста, покажите нам, что вы пробовали до сих пор. – Vishwanath

+0

Проверьте отредактированный код. Теперь видео хранится в SD-карте, но не воспроизводится ... :( – Krishna

ответ

0

Вы можете попробовать, что один:

public String DownloadFromUrl(String DownloadUrl, String fileName) { 

File SDCardRoot = null; 
try { 
    SDCardRoot = Environment.getExternalStorageDirectory(); 
    File files = new File(SDCardRoot+fileName); 
    int sizeoffile; 
    if(!files.exists()) 
    { 
     File root = android.os.Environment.getExternalStorageDirectory();    

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

     URL url = new URL(DownloadUrl); 
     File file = new File(dir, fileName); 

     /* Open a connection to that URL. */ 
     URLConnection ucon = url.openConnection(); 
     sizeoffile = ucon.getContentLength(); 
     Log.d("SIZEOFFILE: ", sizeoffile+" BYTE"); 
     /* 
     * Define InputStreams to read from the URLConnection. 
     */ 
     InputStream is = ucon.getInputStream(); 
     BufferedInputStream bis = new BufferedInputStream(is); 

     /* 
     * 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); 
     } 
     /* Convert the Bytes read to a String. */ 
     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(baf.toByteArray()); 
     fos.flush(); 
     fos.close(); 
    } 
} 
catch (IOException e) { 
    e.getMessage(); 
} 

return SDCardRoot+fileName; } 
0
Finally i found the solution. 



Uri videoUri = data.getData(); 
        File videoFile = null; 
        final InputStream imageStream; 
        try { 
         imageStream = getActivity().getContentResolver().openInputStream(videoUri); 
         byte bytes[] = ByteStreams.toByteArray(imageStream);//IStoByteArray(imageStream); 
         videoFile = new File(Environment.getExternalStorageDirectory()+ "/"+System.currentTimeMillis()+".mp4"); 
         videoFile.createNewFile(); 
         FileOutputStream out = new FileOutputStream(videoFile); 
         out.write(bytes); 
         out.close(); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        }catch (Exception ee){ 
         ee.printStackTrace(); 
        } 
0

I иметь недавно столкнулся с этим.

Я впервые обнаружил, что то, что я получаю, является картиной, а не видео.

Но я не понял, почему Facebook успешно играет в онлайн-видео, которое я поделил с помощью (Google +) фото.

Я тогда случайно обнаружил, что файл, который они в настоящее время дают, является GIF с оригинальным расширением в разделе 0Uв разделе contentUri.

Eeek!