Android 如何通过nanoHTTPd将互联网上的视频流传输到VideoView
我想在下载过程中下载和播放视频文件。由于VideoView无法解决这一问题,我决定与nanoHTTPd合作创建一个伪HTTP服务器,并在我自己的服务器内尝试下载视频文件,然后播放,但我的问题是: 1-如何将下载的部分刷新到videoview并下载其余部分 以下是我的资料来源:Android 如何通过nanoHTTPd将互联网上的视频流传输到VideoView,android,video,video-streaming,download,nanohttpd,Android,Video,Video Streaming,Download,Nanohttpd,我想在下载过程中下载和播放视频文件。由于VideoView无法解决这一问题,我决定与nanoHTTPd合作创建一个伪HTTP服务器,并在我自己的服务器内尝试下载视频文件,然后播放,但我的问题是: 1-如何将下载的部分刷新到videoview并下载其余部分 以下是我的资料来源: public class VideoStreamingServer extends NanoHTTPD { public VideoStreamingServer() { // b
public class VideoStreamingServer extends NanoHTTPD {
public VideoStreamingServer() {
// by default listening on port 8080
super(8080);
}
@Override
public Response serve(String URI, Method method,
Map header, Map parameters, Map files) {
FileInputStream fis = null;
try {
// fis = new FileInputStream("/mnt/sdcard/p/1.mp4");
File bufferFile = File.createTempFile("test", "mp4");
BufferedOutputStream bufferOS = new BufferedOutputStream(
new FileOutputStream(bufferFile));
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet("http://www.example.net/dl/1.mp4");
HttpResponse response = client.execute(request);
Header[] headers = response.getAllHeaders();
Log.e("Internet buffer", "connected to server");
BufferedInputStream bis = new BufferedInputStream(response.getEntity().getContent(), 2048);
byte[] buffer = new byte[16384];
int numRead;
boolean started = false;
while ((numRead = bis.read(buffer)) != -1) {
bufferOS.write(buffer, 0, numRead);
bufferOS.flush();
totalRead += numRead;
if (totalRead > 120000 && !started) {
//problem starts here
//How can I flush the buffer to VideoView?
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new NanoHTTPD.Response(Response.Status.OK, "video/mp4", fis);
}
}
找到一个方法,你可以在这里多读一点:
看,这里是一个答案在页面中间:我不喜欢这是一个链接唯一的答案,但它是有益的(而且还没有死)。如果你能解释一下一般的想法就更好了,这样当链接消失时它就留在这里(它最终会消失)。然后我会投赞成票。