Подтвердить что ты не робот

Встраивание видео Youtube в webbrowser. Объект не поддерживает свойство или метод

Недавно Youtube прекратил поддержку видеороликов, встроенных в формат www.youtube.com/v/{key}. Поэтому я пытался конвертировать видео из "/v/" в "/embed/". Однако, когда я пытаюсь перейти к видео, появляются следующие ошибки:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Я перехожу на веб-страницу, используя следующее:

WPF

<WebBrowser x:Name="trailer" Margin="655,308,30,135"/>

С#

trailer.Navigate("https://www.youtube.com/embed/v2fDTOdWuQQ?rel=0&amp;showinfo=0");

Почему это невозможно работать, просто переключившись с "/v/" на "/embed/"? И как мне решить эту проблему?

4b9b3361

Ответ 1

Это дубликат существующего потока SO

Используйте последнюю версию Internet Explorer в элементе управления веб-браузером

В потоке есть много ответов, в которых содержится фактический код.

Лучшее предложение в том же самом - установить очень большое количество для app.exe в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

Я установил его в 20000, что можно с уверенностью предположить, что оно будет работать во множестве предстоящей версии и использовать последнюю версию как таковую. Этот случай можно легко сделать во время установки вашего exe как такового. Поэтому вам не придется беспокоиться о том, какая версия существует, а какая нет. Минимальная версия, необходимая для встраивания в работу, - IE 9.

Другой вариант - фактически не использовать Embedded IE вообще. Вместо этого используйте Хром. Существует проект CefSharp для того же самого на

https://cefsharp.github.io/

Этот проект позволяет вставлять браузер Chrome в ваши приложения WinForms или WPF. Приложение довольно просто

using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        ChromiumWebBrowser chrome;

        private void InitChrome()
        {
            CefSettings settings = new CefSettings();
            Cef.Initialize(settings);
            chrome = new ChromiumWebBrowser("https://www.youtube.com/embed/v2fDTOdWuQQ?rel=0&amp;showinfo=0");
            this.Controls.Add(chrome);
            chrome.Dock = DockStyle.Fill;
        }
        public Form1()
        {
            InitializeComponent();
            InitChrome();
            //this.webBrowser1.Navigate("https://www.youtube.com/embed/v2fDTOdWuQQ?rel=0&amp;showinfo=0");
        }

    }
}

И отлично работает. Это заставит ваше приложение не зависеть от того, какой браузер установлен на целевой машине.

Youtube Chromium

Ответ 2

Попробуйте установить свой WebBrowser в "тихий режим" (игнорируя эти ошибки script). Для этого требуется некоторая черная магия IE/COM, но она работает.

См. fooobar.com/questions/45295/... о том, как это сделать.

Ответ 3

Используйте WebBrowser.NavigateToString вместо WebBrowser.Navigate и используйте HTML вместо URL. проверьте этот снимок экрана для легкой справки

введите описание изображения здесь