Tôi đang cố gắng tải xuống tệp video và sau đó phát tệp đó trong ứng dụng, nếu tôi đặt tệp video trong thư mục res, tôi có thể phát video mà không gặp sự cố Tuy nhiên, khi tôi thử và tải xuống video thì phát lại, tôi nhận được lỗi VideoView: 1, -2147483648.Phát video đã tải xuống Lỗi: 1, -2147483648
Đây là mã tôi sử dụng để tải các video:
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());
}
này xuất hiện để hoàn thành công, nhưng khi tôi cố gắng để chơi các tập tin với mã sau, tôi nhận được lỗi.
// 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();
Như đã thấy trong mã, trước khi phát, tôi kiểm tra xem tệp có tồn tại không và kích thước của tệp (kích thước bằng với tệp đã tải xuống) nhưng không phát, tôi đoán tệp là bị hỏng nhưng tôi không biết tại sao.
tôi có các điều khoản sau đây đặt trong 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" />
Tôi gặp vấn đề tương tự. Bất cứ câu trả lời nào ? –
bạn có thể đăng toàn bộ stacktrace của mình không? Ngoài ra, bạn đã kiểm tra (giống như với một kiểm tra và kích thước hoặc một cái gì đó) mà tập tin của bạn là hợp lệ (có thể có gì đó sai với phần tải về)? – njzk2
Tải xuống một tệp lớn có thể cần một phương pháp mạnh mẽ hơn, như tải xuống theo khối. – mparaz