【问题标题】:Controlling a browser using C# for streaming media使用 C# 控制浏览器的流媒体
【发布时间】:2020-02-21 22:00:38
【问题描述】:

我正在尝试使用 C# 控制浏览器。过去的工作方式是 OLE/互操作。现代浏览器似乎缺少这一点。我需要做的就是能够导航到 URL,然后不时更改 URL。使用 Process.Start("http://example.com") 的问题是这通常会产生几个子进程,我无法确定以后要杀死的确切进程。多次调用它只会创建新的孩子。我尝试使用 WebBrowser 和 WebView 控件。是的,这些给了我想要的控制,但是渲染引擎嵌入在应用程序中并且太旧了,没有网站允许这些控制工作了。

我发现了一个叫做 WebDriver 的东西。起初这似乎是一个很好的解决方案,除了它似乎非常依赖于浏览器的确切构建并且依赖于 Selenium。它可能非常适合自动化测试,如果浏览器自行更新,我不相信它会很好地用于长期浏览器控制。

接下来是 CefSharp。我过去使用过它,但它似乎也有一个嵌入式和过时的渲染引擎,许多网站抱怨它也过时了。即使 CefSharp 不时更新,我每次都需要重新构建我的应用程序。我在这里看到的问题是,渲染引擎嵌入到与我的应用程序一起分发的程序集中。是的,我见过大量其他嵌入式解决方案。其中许多已多年未更新。

理想情况下,我可以使用适用于任何浏览器版本的 WebDriver 之类的东西来控制浏览器。我可以启动外部浏览器,例如 FireFox 或 Chrome。任何浏览器都有API吗?这正是我想使用现代浏览器实现的伪代码:

ModernBrowser br = new ModernBrowser();
br.Navigate("about:blank"); // clear out last page
if(some_flag)
    br.Navigate(Url); // navigate to new page.
If(done)
    br.Close();
br = null;

这就是我所需要的。死的简单。 我正在尝试实现媒体播放系统。除了我需要现代浏览器来播放 Pandora、Spotify 或任何其他基于 Web 的系统之外,所有代码都可以正常工作。它们都需要最新的浏览器版本,否则它们根本不起作用。在我的应用程序中嵌入渲染引擎是一场噩梦。当然,我今天可以让它工作。我只是不确定明天。

【问题讨论】:

    标签: c# webdriver webbrowser-control media-player chromium-embedded


    【解决方案1】:

    我决定尝试 CefSharp,它确实有效。我意识到我必须不时更新这个。我想指出,如果您决定使用 CefSharp 作为嵌入式浏览器,请不要在您的实时项目中使用 NuGet。创建一次性项目并安装 CefSharp 程序集。截至本条目发布之日,Nuget 安装会破坏您的 C# 项目并使每个程序集都无法使用。我所做的是创建了一个一次性项目,添加了 CefSharp 程序集,然后获取依赖的二进制文件并将它们放在一个新文件夹中。我将我的实时项目设为 X86 目标,并且可以正常工作。

    【讨论】:

    猜你喜欢
    • 2011-05-20
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多