s0611163 2025-01-23 15:29 采纳率: 33.3%
浏览 76
已结题

CefSharp播放视频为什么这么难?

我用CefSharp开发的浏览器可以正常播放网页视频,支持H.264。但是有一种视频无法播放,imosPlayer宇视视频组件无法播放。
但是别人写的Winform+CefSharp的程序可以正常播放。我使用它的依赖文件,创建相同的winform工程,但是不能播放。
我检查了依赖文件,所有chatgpt提到的配置,都不行。
唯一的区别就是界面不同。
视频可以正常拉流,可以正常截图,可以正常录像,但画面出不来,黑屏。但是别人写的demo可以。
实在找不到原因了,在这里问。

补充说明:

  1. 网页右上的video标签的视频可以正常播放
  2. 网页左下的4路imosPlayer组件的视频播放不出来
  3. 依赖文件用的是别人编译好的支持H.264视频播放的CefSharp版本
  4. 我对比了别人的可以播放的程序的依赖文件,是一样的
  5. 我检查了别人写的CefSharp的配置,并抄写了相同的配置
  6. 谷歌浏览器也可以正常播放
  7. 我写了最简单的Winform demo无法播放
  8. 我下载了官方的demo在此基础上开发的也无法播放
  9. 我变着花样问chatgpt几十次,chatgpt给出的所有配置我都仔细检查并尝试了,都不行

补充:
发现问题了

  1. 需要安装webplayer
  2. url输入 imos://startxpwebplayer/ 不报错能启动webplayer.exe就能播放,我的浏览器输入 imos://startxpwebplayer/ 回车报错:Failed to load URL imos://startxpwebplayer/ with error ERR_UNKNOWN_URL_SCHEME (UnknownUrlScheme).
    怎么解决?
  • 写回答

4条回答 默认 最新

  • s0611163 2025-02-13 15:50
    关注

    问题已解决。

    1. 解决浏览器启动WebPlayer.exe的问题,代码如下:
    public class MyResourceRequestHandler : ResourceRequestHandler
    {
        public MyResourceRequestHandler()
        {
        }
    
        protected override bool OnProtocolExecution(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request)
        {
            return true; // 支持如imos://startxpwebplayer/
        }
    }
    
    public class RequestHandler : IRequestHandler
    {
        此处省略
    
        public IResourceRequestHandler GetResourceRequestHandler(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IRequest request, bool isNavigation, bool isDownload, string requestInitiator, ref bool disableDefaultHandling)
        {
            return new MyResourceRequestHandler();
        }
    
        此处省略   
    }
    
    browser.RequestHandler = new RequestHandler(browser);
    
    
    1. 如果WebPlayer.exe是以非管理员身份启动的,而浏览器是以管理员身份启动的,要停止WebPlayer.exe并以管理员身份启动它。
    2. 窗体的标题要设置为网页的title,WebPlayer.exe是根据这个title查找窗体的。
    3. 对于WPF中的CefSharp,无论是CefSharp.WinForms还是CefSharp.Wpf,则仍然不能播放,需要C#把主窗体的句柄、尺寸,以及浏览器相对于主窗体的位置信息传给前端,调用播放器对象的初始化方法时按照文档把这些参数传给它。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月21日
  • 已采纳回答 2月13日
  • 修改了问题 1月23日
  • 修改了问题 1月23日
  • 展开全部