Tôi cần phát trực tuyến video và phát liên tục trong trang web. Tôi đang sử dụng thư viện Nanohttpd để chạy máy chủ trong ứng dụng Android của mình. Tôi có thể phát trực tuyến và phát video khi trang tải. Khi video hoàn tất phát, tôi không thể phát video lần thứ hai. Mỗi khi tôi cần làm mới trang để phát video. Tôi nhận được lỗi sau trong khi cố gắng chơi lần thứ hai.Phát trực tuyến video bằng NanoHttpd, Lỗi: java.net.SocketException: sendto failed: EPIPE (Broken pipe)
java.net.SocketException: sendto failed: EPIPE (Broken pipe)
at libcore.io.IoBridge.maybeThrowAfterSendto(IoBridge.java:546)
at libcore.io.IoBridge.sendto(IoBridge.java:515)
at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBody(NanoHTTPD.java:1386)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1359)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1349)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.send(NanoHTTPD.java:1335)
at server.http.android.androidhttpserver.server.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:769)
at server.http.android.androidhttpserver.server.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:186)
at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.ErrnoException: sendto failed: EPIPE (Broken pipe)
at libcore.io.Posix.sendtoBytes(Native Method)
at libcore.io.Posix.sendto(Posix.java:176)
at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:278)
at libcore.io.IoBridge.sendto(IoBridge.java:513)
at java.net.PlainSocketImpl.write(PlainSocketImpl.java:504)
at java.net.PlainSocketImpl.access$100(PlainSocketImpl.java:37)
at java.net.PlainSocketImpl$PlainSocketOutputStream.write(PlainSocketImpl.java:266)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBody(NanoHTTPD.java:1386)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectEncoding(NanoHTTPD.java:1359)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.sendBodyWithCorrectTransferAndEncoding(NanoHTTPD.java:1349)
at server.http.android.androidhttpserver.server.NanoHTTPD$Response.send(NanoHTTPD.java:1335)
at server.http.android.androidhttpserver.server.NanoHTTPD$HTTPSession.execute(NanoHTTPD.java:769)
at server.http.android.androidhttpserver.server.NanoHTTPD$ClientHandler.run(NanoHTTPD.java:186)
at java.lang.Thread.run(Thread.java:818)
Tôi gửi phản hồi như sau.
@Override
public Response serve(IHTTPSession session) {
FileInputStream fis = null;
File file = new File("/storage/emulated/0/DCIM/Camera/VIDEO.mp4");
try{
if(file.exists())
{
fis = new FileInputStream(file);
}
else
Log.d("FOF :", "File Not exists:");
}catch (FileNotFoundException e)
{
e.printStackTrace();
}
return new NanoHTTPD.Response(Response.Status.OK,"video/mp4",fis, file.length());
}
Các tập tin HTML để truy cập video là
<html><body>
<video id="video_id" width="420" autoplay loop>
<source src=http://192.168.2.6:8080/ type="video/mp4">
</video>
</body></html>
Vui lòng cung cấp cho tôi một giải pháp để phát video liên tục mà không làm mới trang web.
không getResponse() phương pháp xác định gì? –
Phản hồi riêng getResponse (Thông báo chuỗi) { trả về createResponse (Response.Status.OK, "text/plain", message); } – ZulNs
Tôi nhận được cảnh báo sau đây trong NanoHTTPD.java 'phân phối (java.lang.String, server.http.android.androidhttpserver.server.NanoHTTPD.Method, java.util.Map, java.util.Map , java.util.Map ) 'không được dùng nữa Báo cáo kiểm tra này báo cáo mã không sử dụng được sử dụng trong phạm vi kiểm tra được chỉ định. –