Я пытаюсь загрузить видеопоток в реальном времени, используя Javascript и .NET Web Socket.Я передаю данные в кодировке Base64 каждую секунду на сервер веб-сокетов, где эти данные добавляются в один файл в формате WebM.Иногда видео не загружается из-за неизвестной ошибки или загружается частично.Может ли кто-нибудь помочь с лучшим подходом загружать видео на сервер в режиме реального времени и конвертировать его в MP4 без платных сторонних инструментов.Добавляю код, который я использую ниже-
//js code
var handleDataAvailable = function(event) {
if (event.data && event.data.size > 0) {
try{
var reader = new window.FileReader();
reader.onloadend = function () {
var base64data = reader.result;
if (ws.readyState == WebSocket.OPEN){
ws.send(base64data);
}
}
reader.readAsDataURL(event.data);
}catch(ex){
}
}
}
const SERVER_URL = "ws://localhost:5029";
var ws = new WebSocket(SERVER_URL);
var mediaRecorder = new MediaRecorder(outputStream, options);
mediaRecorder.ondataavailable = handleDataAvailable;
// C# code
// System.Net.WebSockets;
// websocket connection handling code
//
//on message event of websocket
public async Task OnMessage(string message)
{
var base64Data = Regex.Match(message, @"data:video/(?<type>.+?),(?<data>.+)").Groups["data"].Value;
var ByteArray = Convert.FromBase64String(base64Data);
string path = "~//TempUploads//Recordings//test.webm";
if (!Directory.Exists(HttpContext.Current.Server.MapPath(path)))
{
Directory.CreateDirectory(HttpContext.Current.Server.MapPath(path));
}
using (var stream = new FileStream(HttpContext.Current.Server.MapPath(path), FileMode.Append))
{
try
{
stream.Write(ByteArray, 0, ByteArray.Length);
}
catch (Exception ex)
{
}
}
}