Я пытаюсь создать веб-интерфейс для шифрования видеопотока на лету.
Я читаю поток с IP-камеры, хочу зашифровать его (например, System.Security.Cryptography.Rijndael
)и верните зашифрованный поток.
У меня будет другое приложение, чтобы расшифровать поток и показать его пользователю (суть в том, чтобы зашифровать IP-камеру для отправки защищенного потока через Интернет).
У меня есть две части кода:
В моем EncryptionService:
public Task<Stream> Encode(webcamUrl, Stream output){
[...Rijndael creation...]
using (var client = new HttpClient())
using (StreamReader originVideo = new StreamReader(await
client.GetStreamAsync(webcamUrl)))
{
var originalVideoBuffer = new char[4096];
await originVideo.ReadAsync(originalVideoBuffer, 0, 4096);
using (CryptoStream csEncrypt = new CryptoStream(output, encryptor, CryptoStreamMode.Write))
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
await swEncrypt.WriteAsync(originalVideoBuffer);
}
}
В моем контроллере:
public async Task<FileStreamResult> GetEncoded()
{
using (var ms = new MemoryStream())
{
await _encoderService.GetEncodedVideoStream("https://webcam_ip/", ms);
return new FileStreamResult(ms, "text/plain");
}
}
Проблема, я получу ошибку "ObjectDisposedException: Невозможно получить доступ к закрытому потоку. ".
У вас есть идеи, как это исправить?А может, есть другой способ, более простой?