热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

DirectShow播放H264视频记录(1)

俺是初学者,各位高手如果看了,不要见笑,其实俺写这个也就是为了记录一下。项目需要用到视频监控,以前做了个XNA的版本,但是XNA对网卡以及操作系统都是要求,领导要求没办法,

  俺是初学者,各位高手如果看了,不要见笑,其实俺写这个也就是为了记录一下。

 

  项目需要用到视频监控,以前做了个XNA的版本,但是XNA对网卡以及操作系统都是要求,领导要求没办法,一个字“改”,那就改!参考了一下,决定用DirectShow。以前我没有做过,公司里也没有做过,只能是赶鸭子上架了,杯具阿!

 

  开始看教程,看了半天,还是有点云里雾里的,算了,还是直接找demo模仿了,然后就开始看自带的Demo,看了几个Ticker、Blender、Async、Ball,我觉得这几个例子倒是不错(所有的例子肯定都是很好的),反正对我这个初学者还是挺有作用,至少对Filter这个概念理解的更深了,当然了,这期间也要不间断看看老陆的资料(还是比较经典)。Ticker说了如何加载Render Filter(VMR),Ball说了如何加载Source Filter,Async说了如何写自己的Filter。然后就开始进行时了:

 

  1.写了自己对一个Filter,读取文件,解析h264编码,因为以前用做过一版本,还是比较顺利,但是在其中重装过一次系统,xp->win2003server,然后杯具又一次上演:开发环境搞不定了,NND,搞了一整天。顺利完成,在Graph Edit上测试完成,但是就是闪烁,怀疑是解码的问题,暂时没有理会

 

  2.不知不觉杯具再次上演,我的Graph Edit打不开,找了半天资料也没有找到原因,一想算了直接写一个Demo调用吧,然后就开始写demo,很顺利,哈哈

 

  3.然后需要自己封装一个Dll需要C#调用,写好了,老是不能播放,我的神了,真无语了!然后就开始排错

 

         hr = pWC->GetNativeVideoSize(&lWidth, &lHeight, 0, 0);

 

    这个地方的问题,返回的Width和Height,然后找原因,其实当时脑子有点懵,胡找。终于在MSDN上找到这么一句:

 

    IVMRWindowlessControl::GetNativeVideoSize Method

Remarks

If the VMR is not connected to an upstream filter, this method will succeed but all parameters will be set to zero.

 

 

    地址http://msdn.microsoft.com/en-us/library/dd390559%28VS.85%29.aspx

 

 

    没有反应过来,哈哈,然后接着找

 

        hr = pGB->Render(pStreamFilter->GetPin(0));

        返回值为0x8004025f(VFW_E_NOT_IN_GRAPH)  The filter to which this pin belongs is not in the filter graph.

 

     奥,原来Filter没有加到Filter Graph Manage里面,我的天,撞墙的心都有了

 

 

 


推荐阅读
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文深入解析了HTML框架集(FRAMESET)的使用方法及其应用场景。首先介绍了几个关键概念,如如何通过FRAMESET标签将主视图划分为多个独立的区域,每个区域可以加载不同的HTML文件。此外,还详细探讨了FRAMESET在实际开发中的优缺点,并提供了具体的实例代码,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文深入解析了Spring Cloud路由网关Zuul的核心功能及其典型应用场景。通过对方志朋老师教材的学习和实践,详细探讨了Zuul在微服务架构中的重要作用,包括请求路由、过滤器链管理以及服务动态扩展等关键特性。同时,结合实际案例,展示了Zuul在高并发和复杂业务场景下的应用优势,为读者提供了全面的技术参考。 ... [详细]
  • JBPM 6.5 环境配置深入解析(下篇)
    本文深入探讨了JBPM 6.5 的环境配置细节,从零开始详细介绍了下载、解压后的文件结构,并结合实际操作步骤,为初学者提供了全面的配置指南。通过具体的示例和详细的解释,帮助读者快速掌握 JBPM 6.5 的安装与配置过程。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
author-avatar
手机用户2502893987
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有