我在asp.net c#中工作。我想从内存流播放视频。我正在加密和解密视频。我将解密的视频存储在内存流中,并且想要播放它而不保存。我用Google搜索并找到帖子的数量,但主要是帖子未完成或提供了与directshow的链接。我也尝试过directshow,但它对我来说是全新的并包含一些演示,这使得混淆哪一个用于内存流。
我只想从内存流中播放解密的视频数据。请让我知道我能做些什么,如果有任何论坛提供样本会更好。
我的解密代码
public bool DecryptData(String inName, String outName, byte[] rijnKey, byte[] rijnIV)
{
FileStream fin = null;
FileStream fout = null;
CryptoStream decStream = null;
try
{
fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
//Create variables to help with read and write.
byte[] bin = new byte[bufLen]; //This is intermediate storage for the encryption.
long rdlen = 0; //This is the total number of bytes written.
long totlen = fin.Length; //This is the total length of the input file.
int len; //This is the number of bytes to be written at a time.
RijndaelManaged rijn = new RijndaelManaged();
//DES ds = new DESCryptoServiceProvider();
decStream = new CryptoStream(fin, rijn.CreateDecryptor(rijnKey, rijnIV), CryptoStreamMode.Read);
//odkoduj testowy fragment
byte[] test = new byte[testHeader.Length];
decStream.Read(test, 0, testHeader.Length);
string contents = new StreamReader(decStream).ReadToEnd();
byte[] unicodes = Encoding.Unicode.GetBytes(contents);
MemoryStream msOutput = new MemoryStream(unicodes);
//here I have to implement player that plays from memory stream.
}
catch
{}
}
答案 0 :(得分:0)
我已经回答了有关视频文件加密和解密的一个问题,但是我可以理解,您不想在客户端计算机上保存该文件的物理副本。
https://stackoverflow.com/a/58129727/9869635
但是无法从memorystream播放视频文件(不确定某些付费的第三方工具)
因此,您可以按照以下方法之一进行操作:
1:将该文件保存在客户端的“ temp”文件夹中,例如“ temp / myvideos / sample.mkv”
2:将其从属性(How to hide file in C#?)中隐藏起来
3:从那里播放视频
4:播放后,从“ temp”文件夹(myvideos)中删除该自定义文件夹中的所有文件。
答案 1 :(得分:-1)
今天最好的方法,适用于任何平台...是使用Http Live Streaming然后你可以使用支持HLS的播放器,或者你可以简单地使用HTML5视频标签。请参阅下面的更新答案...