Мне нужно потоковое видео и воспроизведение на веб-странице. Я использую библиотеку Nanohttpd для запуска сервера в своем приложении для Android. Я могу передавать и воспроизводить видео при загрузке страницы. После завершения воспроизведения видео я не могу воспроизвести видео во второй раз. Каждый раз, когда мне нужно обновить страницу, чтобы воспроизвести видео. При попытке воспроизведения во второй раз я получаю следующую ошибку.Потоковое видео с использованием NanoHttpd, Ошибка: 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)
Я посылаю ответ следующим образом.
@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());
}
HTML-файл, чтобы получить доступ к видео является
<html><body>
<video id="video_id" width="420" autoplay loop>
<source src=http://192.168.2.6:8080/ type="video/mp4">
</video>
</body></html>
Просьба предоставить мне решение для воспроизведения видео непрерывно без обновления веб-страницы.
Что GetResponse() метод определяет? –
private Response getResponse (String message) { return createResponse (Response.Status.OK, "text/plain", message); } – ZulNs
Я получаю следующее предупреждение в NanoHTTPD.java 'serve (java.lang.String, server.http.android.androidhttpserver.server.NanoHTTPD.Method, java.util.Map, java.util.Map , java.util.Map ) 'устарел Эта инспекция сообщает, что в указанном объеме проверки используется устаревший код. –