Ich versuche eine Videodatei herunterzuladen und dann in einer App abzuspielen, wenn ich die Videodatei in den Ordner res aufnehme, kann ich sie ohne Probleme abspielen , aber wenn ich versuche, das Video herunterzuladen, dann spiele ich den VideoView Error: 1, -2147483648.Abspielen eines heruntergeladenen Videos Fehler: 1, -2147483648
Dies ist der Code verwende ich das Video herunterladen:
try
{
URL url = new URL(videoURL);
URLConnection conexion = url.openConnection();
conexion.connect();
int lengthOfFile = conexion.getContentLength();
Log.d("ANDRO_ASYNC", "Length of file: " + lengthOfFile);
InputStream input = new BufferedInputStream(url.openStream());
final File dir = new File(this.getFilesDir() + "/videos");
dir.mkdirs(); //create folders where write files
final File file = new File(dir, "my_video.mp4");
Log.d("writePath", file.getPath());
FileOutputStream output = new FileOutputStream(file);
byte data[] = new byte[1024];
long total = 0;
while((count = input.read(data)) != -1)
{
total += count;
//publishProgress("" + (int)((total*100)/lengthOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
Log.d("download", "finished");
}
catch(Exception e)
{
Log.d("Exception", e.getMessage());
}
Dies scheint erfolgreich abgeschlossen, aber wenn ich versuche, die Datei mit dem gefolgt Code zu spielen, habe ich den Fehler.
// Play Video
videoView = (VideoView)findViewById(R.id.surface_view);
//
File f = new File("/data/data/com.companyname.appname/files/videos/videoFilename.mp4");
if(f.exists())
{
long len = f.length();
String length = String.valueOf(len);
Log.d("file", "exists");
Log.d("length", (String)length);
}
else
{
Log.d("file", "does not exist");
}
//
videoView.setMediaController(new MediaController(this));
videoView.setVideoPath(f.getPath());
videoView.start();
Wie im Code zu sehen, bevor ich überprüfen, ob die Datei vorhanden ist und spielen auch vermute, es ist eine Größe (es die gleiche Größe wie die heruntergeladene Datei ist), aber es wird nicht spielen, ich bin die Datei verdorben, aber ich weiß nicht warum.
Ich habe folgende Berechtigungen im Manifest
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERAL_STORAGE" />
Ich habe genau das gleiche Problem. Irgendeine Antwort ? –
können Sie Ihren kompletten StackTrace veröffentlichen? Haben Sie auch (wie bei einer Prüfsumme und Größe oder etwas) überprüft, dass Ihre Datei gültig ist (es könnte etwas mit dem Download-Teil nicht stimmen)? – njzk2
Das Herunterladen einer großen Datei erfordert wahrscheinlich eine robustere Methode, wie das Herunterladen in Chunks. – mparaz