Передача медиа-объекта из представления в контроллер

#javascript #c# #jquery #asp.net #asp.net-mvc

#javascript #c# #jquery #asp.net #asp.net-mvc

Вопрос:

У меня есть требование опубликовать mediaStreamObj из представления в контроллер и сохранить его на сервере SQL в переменной. Позже переменные данные передаются в другое приложение для потоковой передачи. В текущем ядре потоковые данные поступают как null. пожалуйста, помогите мне передать фактические данные в потоке, чтобы сохранить их в базе данных и использовать в другом приложении для потоковой передачи

Код Javascript

 let startRecord = document.getElementById("startrecord");
let stopRecord = document.getElementById("stoprecord");
let liveVideo = document.getElementById("livevideo");

let constraintObj = {
    audio: true,
    video: true
};

navigator.mediaDevices
.getUserMedia(constraintObj)
        .then(function (mediaStreamObj) {
            liveVideo.srcObject = mediaStreamObj;
            liveVideo.play();

            let mediaRecorder = new MediaRecorder(mediaStreamObj);
            let chunks = [];

            startRecord.addEventListener("click", ev => {
                mediaRecorder.start();
            });
            stopRecord.addEventListener("click", ev => {
                mediaRecorder.stop();
            });
            mediaRecorder.ondataavailable = function (ev) {
                chunks.push(ev.data);
            }
            mediaRecorder.onstop = function () {                
                let blob = new Blob(chunks, { 'type': 'video/mp4' });
                HttpPost(blob);
                chunks = [];
            }
        })
        .catch(function () {
            console.log("Error");
        })

function HttpPost(blob) {    
    let params = {
         VideoStream: blob,
         VideoType: 'video/mp4'
    };

    //var formData = new FormData()
    //formData.append('VideoStream', blob)
    //formData.append('VideoType', 'video/mp4')

    $.ajax({
        type: "POST",
        url: "/Home/Load/",
        data: params,
        success: function (msg) {       
        },
        error: function (err) {
            alert(err);
        }
    });  
}
  

MVC — C#

 [HttpPost]
public string Load(VideoModel video)
{
    return View();
}

public class VideoModel
{
    public string VideoType { get; set; }
    public Stream VideoStream { get; set; }
}
  

HTML

 <button id="startrecord" 
    class="btn btn-outline-danger btn-lg btn-block" >Record</button>
<button id="stoprecord" 
    class="btn btn-outline-info btn-lg btn-block" >Stop</button>

<video id="livevideo" controls></video>
  

Комментарии:

1. В чем проблема, с которой вы столкнулись? Попадает ли Load действие из пользовательского интерфейса? mediaRecorder.onstop срабатывает?

2. да, он попадает, но значения отображаются как null.