Тихий режим просто игнорирует ошибки, и я остаюсь с черным ящиком.

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

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

WPF

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

C #

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

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

 Simon Mourier02 нояб. 2017 г., 08:57
Просто позвоните, прежде чем переходить:stackoverflow.com/a/34267121/403671
 Simon Mourier03 нояб. 2017 г., 09:01
@JohnOdom Да, это лучший ответ в этой теме, но, эй, это не стоит 500 баксов :-)
 John Odom02 нояб. 2017 г., 20:11
@SimonMourier У меня точно такая же проблема, и кажется, что ответ RooiWillie на вашу ссылку работает для моей ситуации.
 SACn08 нояб. 2017 г., 21:09
Видетьпример блога, вы можете использовать<iframe width="100%" height="480" src="https://www.youtube.com/embed/0mNptklwylc?rel=0" frameborder="0" allowfullscreen></iframe> встраивать. Его работа в примере страницы также.

Ответы на вопрос(4)

Решение Вопроса

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

В потоке есть много ответов с реальным кодом.

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

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

Кроме того, другой вариант - вообще не использовать встроенный IE. Вместо этого используйте Chromium. Для этого же есть проект CefSharp.

https://cefsharp.github.io/

Этот проект позволяет встроить браузер Chromium в приложение 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");
        }

    }
}

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

Добавьте перечисленное ниже

public enum BrowserEmulationVersion
{
    Default = 0,
    Version7 = 7000,
    Version8 = 8000,
    Version8Standards = 8888,
    Version9 = 9000,
    Version9Standards = 9999,
    Version10 = 10000,
    Version10Standards = 10001,
    Version11 = 11000,
    Version11Edge = 11001
}

Создайте новый класс «InternetExplorerBrowserEmulation» и добавьте в него приведенные ниже коды.

public class InternetExplorerBrowserEmulation
{
    private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer";
    private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION";


    public static int GetInternetExplorerMajorVersion()
    {
        int result;

        result = 0;

        try
        {
            RegistryKey key;

            key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey);

            if (key != null)
            {
                object value;

                value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null);

                if (value != null)
                {
                    string version;
                    int separator;

                    version = value.ToString();
                    separator = version.IndexOf('.');
                    if (separator != -1)
                    {
                        int.TryParse(version.Substring(0, separator), out result);
                    }
                }
            }
        }
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }

        return result;
    }

    public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
    {
        bool result;

        result = false;

        try
        {
            RegistryKey key;

            key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);

            if (key != null)
            {
                string programName;

                programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);

                if (browserEmulationVersion != BrowserEmulationVersion.Default)
                {
                    // if it's a valid value, update or create the value
                    key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
                }
                else
                {
                    // otherwise, remove the existing value
                    key.DeleteValue(programName, false);
                }

                result = true;
            }
        }
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }

        return result;
    }

    public static bool SetBrowserEmulationVersion()
    {
        int ieVersion;
        BrowserEmulationVersion emulationCode;

        ieVersion = GetInternetExplorerMajorVersion();

        if (ieVersion >= 11)
        {
            emulationCode = BrowserEmulationVersion.Version11;
        }
        else
        {
            switch (ieVersion)
            {
                case 10:
                    emulationCode = BrowserEmulationVersion.Version10;
                    break;
                case 9:
                    emulationCode = BrowserEmulationVersion.Version9;
                    break;
                case 8:
                    emulationCode = BrowserEmulationVersion.Version8;
                    break;
                default:
                    emulationCode = BrowserEmulationVersion.Version7;
                    break;
            }
        }

        return SetBrowserEmulationVersion(emulationCode);
    }

    public static BrowserEmulationVersion GetBrowserEmulationVersion()
    {
        BrowserEmulationVersion result;

        result = BrowserEmulationVersion.Default;

        try
        {
            RegistryKey key;

            key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
            if (key != null)
            {
                string programName;
                object value;

                programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
                value = key.GetValue(programName, null);

                if (value != null)
                {
                    result = (BrowserEmulationVersion)Convert.ToInt32(value);
                }
            }
        }
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }

        return result;
    }


    public static bool IsBrowserEmulationSet()
    {
        return GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
    }
}

Перед настройкой URL необходимо добавить приведенные ниже коды.

if (!InternetExplorerBrowserEmulation.IsBrowserEmulationSet())
{
  InternetExplorerBrowserEmulation.SetBrowserEmulationVersion();
}

Это запустит ваши видео с помощью веб-браузера в WPF.

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

 Mohit Sharma02 нояб. 2017 г., 11:36
Вы можете скачать полный рабочий код по ссылке нижеdropbox.com/s/peuep22qqy200ot/YoutubeIssue.zip?dl=0

и скрипта). Это требует некоторого черного волшебства IE / COM, но это работает.

Видетьhttps://stackoverflow.com/a/6198700/3629903 о том, как это сделать.

 difurious13 сент. 2017 г., 19:28
Тихий режим просто игнорирует ошибки, и я остаюсь с черным ящиком.

Ваш ответ на вопрос