我在磁盘上有一些AVI文件,但它们是加密的。我想知道是否有一种方法可以解密它们并将它们流式传输到浏览器(使用MemoryStream
或类似的东西),而无需编写任何文件?
我知道有Windows Media Services但我使用的是Vista计算机,而Windows Media Services只会安装在Windows Server 2003和2008中。
有没有办法在没有太多麻烦的情况下实现这一目标,还是Media Services / Windows Server是唯一的出路?如果有,我会使用类似自定义IHttpHandler
(.ashx文件)的内容吗?
<小时/> 修改
我决定使用自定义IHttpHandler
。我需要什么基本代码来播放视频?
答案 0 :(得分:1)
我不想使用MemoryStream
视频。假设您可以通过加密的AVI文件创建CryptoStream
(在System.Security.Cryptography
命名空间中找到),您应该只需将Read
从Write
抽到Response.OutputStream
上IHttpHandler
中的 byte[] buffer = new byte[65556]; // adjust the buffer size as yo prefer.
CryptoStream inStream = YourFunctionToDecryptAVI(aviFilePath);
int bytesRead = inStream.Read(buffer, 0, 65556);
while (bytesRead != 0)
{
context.Response.OutputStream.Write(buffer, 0, bytesRead);
bytesRead = inStream.Read(buffer, 0, 65556);
if (!context.Response.IsClientConnected) break;
}
Response.Close(); //see edit note.
。类似的东西: -
{{1}}
确保关闭响应缓冲区并指定内容类型。
修改强>:
通常我讨厌近距离接听,看起来很苛刻。然而,虽然分块编码不应该要求它,但在流式视频的情况下,可能是客户端不喜欢它。此外,通过大量数据传输,关闭连接并不是什么大问题。