Я свел свою проблему к стандартному приложению Blazor Web Assembly.
Проект прямо из мастера, с добавленным ниже кодом.
- Я изменил страницу Index.razor на это:
@page "/"
@inject IJSRuntime JSRuntime;
@using System.Drawing;
@using System.IO;
<div>
<h1>Video Test</h1>
</div>
<video id="video" width="640" height="480" autoplay></video>
<div>
<button type="button" class="btn btn-primary" @onclick="StartVideo">Click Me</button>
</div>
@code {
async Task StartVideo()
{
await JSRuntime.InvokeVoidAsync("startVideo");
}
}
У меня есть прикрепленная страница JavaScript:
function startVideo() {
alert("Test Alert!");
var video = document.getElementById('video');
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({ video: true }).then(function (stream) {
video.src = window.URL.createObjectURL(stream);
video.srcObject = stream;
video.play();
});
}
}
Приложение компилируется без проблем. Когда я запускаю его и нажимаю кнопку, я получаю предупреждение. Я добавил предупреждение, чтобы подтвердить, что Java Script действительно запущен.
Браузер Chrome запрашивает разрешение на использование моей веб-камеры, что я даю.
Моя веб-камера активируется (на моем компьютере есть индикатор, который показывает, когда камера активна).
Однако на странице ничего не отображается. Я предполагаю, что это что-то простое с привязкой моего потока камеры к тегу. В следующей итерации я буду делать снимки видеопотока. На данный момент я хочу, чтобы на странице отображался только канал.
Должен ли я маршрутизировать привязку через блок кода C # или могу, как я сделал здесь? Привязать Javascript напрямую к элементу HTML?
@ref
вместо того, чтобы получить его снова с помощью getElementById (). Хотя оба должны работать. - person Henk Holterman   schedule 24.05.2020