Как включить WebRTC (доступ к камере и микрофону) для CefSharp в WinForms

По умолчанию, если вы пытаетесь получить доступ к navigator.getUserMedia Объект в окне из документа, загруженного в CefSharp без соответствующей настройки, браузер не разрешит доступ к микрофону или камере. Даже если вы заходите на защищенный веб-сайт (используя https протокол) или с локальными файлами, API не будет просто работать.

Решение, однако, очень простое, вам нужно только добавить --enable-media-stream установите флажок при инициализации CefSharp, и вы готовы работать с микрофоном и камерой.

Добавить флаг включения медиа потока

Решение звучит легко, правда? Его реализация тоже проста. Вам просто нужно найти где CefSettings загружаются в Cefsharp в вашем проекте и используют Add метод CefCommandLineArgs Словарь, чтобы добавить флаг, который нам нужен:

CefSettings settings = new CefSettings();
// Add the --enable-media-stream flag
settings.CefCommandLineArgs.Add("enable-media-stream", "1");
Cef.Initialize(settings);

CefSettings.CefCommandLineArgs Свойство позволяет добавлять настраиваемые аргументы командной строки в коллекцию флагов, которые должны быть добавлены при инициализации Chromium и в OnBeforeCommandLineProcessing событие. Первый аргумент Add Функция указывает имя флага, который должен быть добавлен, а в качестве второго аргумента — его значение (в этом случае 1 указывает, что он должен быть включен).

пример

В следующем примере инициализируется простой экземпляр CefSharp внутри формы. Он загрузит веб-сайт, который позволяет вам делать снимки в браузере (или измеритель объема в соответствии с заданным вами веб-URL)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// Load cefsharp
using CefSharp;
using CefSharp.WinForms;
namespace CefsharpExample
{
public partial class Form1 : Form
{
public ChromiumWebBrowser chromeBrowser;
public void InitializeChromium()
{
CefSettings settings = new CefSettings();
// Initialize cef with a command line argument
// In this case the enable-media-stream flag that allows you to access the camera and the microphone
settings.CefCommandLineArgs.Add("enable-media-stream", "1");
Cef.Initialize(settings);
// Create a browser component
// In this example we are opening a website that allows you to take pictures with the camera online
chromeBrowser = new ChromiumWebBrowser("https://webcamtoy.com");
// Or if you want to test the microphone level instead
// chromeBrowser = new ChromiumWebBrowser("https://webaudiodemos.appspot.com/volume-meter/");
// Add the cef control to the form and fill it to the form window.
this.Controls.Add(chromeBrowser);
chromeBrowser.Dock = DockStyle.Fill;
}
public Form1()
{
InitializeComponent();
// Start cefsharp
InitializeChromium();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Cef.Shutdown();
}
}
}

Интересным в CefSharp является то, что, в отличие от Google Chrome, вам не будет предложено предоставить доступ к микрофону или камере, он просто предоставит доступ к устройствам.

Ссылка на основную публикацию
Adblock
detector