#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.