Simple C# server to stream video over HTTP -
i trying create simple console application in c #. need create streaming video , must accessible straight browser.
i reviewing link streaming big video files .net, seems code asp.net
another thing trying, tcpcliente, have problems when sending big files.
var fs = file.open("../../video.mp4", filemode.open); outheaders.add("content-type", "video/mp4"); outheaders.add("accept-ranges", "0-" + fs.length); long size = fs.length; long length = size; long startbytes = 0; long endbytes = size - 1; if (headers["range"] != null) { var msg = system.text.encoding.ascii.getbytes("http/1.0 206 partial content" + "\n"); stream.write(msg, 0, msg.length); var range = parserange(size, headers["range"].tostring()); startbytes = range.start; endbytes = range.end; fs.seek(startbytes, seekorigin.begin); length = endbytes - startbytes + 1; } else { var msg = system.text.encoding.ascii.getbytes("http/1.0 200 ok" + "\n"); stream.write(msg, 0, msg.length); } outheaders.add("content-length", length); outheaders.add("content-range", string.format("bytes {0}-{1}/{2}", startbytes, endbytes, size)); sendheader(stream, outheaders); int bytesread = 0; byte[] buf = new byte[client.sendbuffersize]; while (fs.position <= endbytes && (bytesread = fs.read(buf, 0, buf.length)) > 0) { stream.write(buf, 0, bytesread); stream.flush(); } fs.close();
the problem in:
while (fs.position <= endbytes && (bytesread = fs.read(buf, 0, buf.length)) > 0) { stream.write(buf, 0, bytesread); stream.flush(); }
when fs.position = 425984 error:
no se controló system.io.ioexception hresult=-2146232800 message=no se pueden leer los datos de la conexión de transporte: se ha forzado la interrupción de una conexión existente por el host remoto. source=system stacktrace: en system.net.sockets.networkstream.write(byte[] buffer, int32 offset, int32 size) en httpserver.program.main(string[] args) en j:\httpserver\httpserver\program.cs:línea 85 en system.appdomain._nexecuteassembly(runtimeassembly assembly, string[] args) en system.appdomain.executeassembly(string assemblyfile, evidence assemblysecurity, string[] args) en microsoft.visualstudio.hostingprocess.hostproc.runusersassembly() en system.threading.threadhelper.threadstart_context(object state) en system.threading.executioncontext.runinternal(executioncontext executioncontext, contextcallback callback, object state, boolean preservesyncctx) en system.threading.executioncontext.run(executioncontext executioncontext, contextcallback callback, object state, boolean preservesyncctx) en system.threading.executioncontext.run(executioncontext executioncontext, contextcallback callback, object state) en system.threading.threadhelper.threadstart() innerexception: system.net.sockets.socketexception hresult=-2147467259 message=se ha forzado la interrupción de una conexión existente por el host remoto source=system errorcode=10054 nativeerrorcode=10054 stacktrace: en system.net.sockets.socket.send(byte[] buffer, int32 offset, int32 size, socketflags socketflags) en system.net.sockets.networkstream.write(byte[] buffer, int32 offset, int32 size) innerexception:
in line stream.write(buf, 0, bytesread);
what can do? thx
c# http video streaming
No comments:
Post a Comment