在网络浏览器中嵌入Youtube视频.对象不支持属性或方法

dif*_*ous 19 c# youtube wpf

Youtube最近停止支持以www.youtube.com/v/{key}格式嵌入的视频.所以我试图将视频从"/ v /"转换为"/ embed /".但是,当我尝试导航到视频时,会弹出以下错误:

在此输入图像描述

在此输入图像描述

在此输入图像描述

我使用以下内容导航到网页:

WPF

<WebBrowser x:Name="trailer" Margin="655,308,30,135"/>
Run Code Online (Sandbox Code Playgroud)

C#

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

为什么仅通过从"/ v /"切换到"/ embed /"就无法工作?我该如何解决这个问题呢?

Tar*_*ani 14

这是现有SO线程的副本

在Web浏览器控件中使用最新版本的Internet Explorer

该线程有很多答案,其中包含实际代码.

在同一个最好的建议是设置一个非常高的数字,为您app.exeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

我把它设置为20000,可以安全地假设在很多即将到来的版本中工作并使用最新版本.这种情况很容易在你的exe设置过程中完成.因此,您不必担心哪个版本存在,哪个版本不存在.嵌入工作所需的最低版本是IE 9.

另外,另一种选择是根本不使用嵌入式IE.相反,使用Chromium.有一个相同的CefSharp项目

https://cefsharp.github.io/

该项目允许您在您的WinForms或WPF应用程序中嵌入chrome浏览器.该应用程序非常简单

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");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好.这将使您的应用程序不依赖于目标计算机上安装的浏览器.

Youtube Chromium