5
私はビデオをストリーミングしてWebページに連続して再生する必要があります。私はNanohttpdライブラリを使用して、Androidアプリでサーバーを実行しています。私は、ページが読み込まれたときにビデオをストリーミングして再生することができます。動画の再生が完了すると、もう一度動画を再生することはできません。ビデオを再生するたびにページを更新する必要があります。 2回目の試合中に次のエラーが表示されます。ビデオ:java.net.SocketExceptionがは:失敗のsendto:EPIPE(壊れたパイプ)
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>
である私に、Webページを更新せずに連続して動画を再生するためのソリューションを提供してください。以下のコードで正常に
てgetResponse()メソッドの定義を行いますか? –
プライベートレスポンスgetResponse(文字列メッセージ){ 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 ) 'は推奨されていません この検査では、指定された検査スコープで廃止予定のコードが使用されている場所がレポートされます。 –