使用 DirectShow.NET 的音频同步问题

2024-01-29

我已经在 DirectShow.NET 论坛上启动了一个主题,这里是链接http://sourceforge.net/projects/directshownet/forums/forum/460697/topic/5194414/index/page/1 http://sourceforge.net/projects/directshownet/forums/forum/460697/topic/5194414/index/page/1但不幸的是问题仍然存在......

我有一个应用程序,可以从网络摄像头捕获视频并从麦克风捕获音频并将其保存到文件中,由于某种原因音频和视频永远不会同步,我尝试了以下操作: 1. 从 ffdshow 编码器开始,更改为 AVI Mux - 问题仍然存在,音频延迟,在视频结束时,图片保持冻结状态,音频继续 2.从AVI Mux更改为WM ASF Writer - 视频在开始时被冻结(2秒),视频的其余部分是同步的(但前两秒不可用) 3. 创建 SampleGrabber 来打印音频和视频的时间戳 - 看到音频时间戳早了 500 毫秒,但我不知道如何处理这个事实...... 4.尝试手动将ReferenceClock设置为捕获过滤器(音频/视频)之一,但两者都不会转换为IReferenceClock 5.创建一个SystemClock并将其设置为ReferenceClock - 没有区别 6. 在图表上设置 SyncUsingStreamOffset(true) - 时间戳现在更接近,但最终结果是相同的 7.尝试将音频和视频保存到两个不同的文件并使用VirtualDub查看它们是否匹配,但仍然不匹配...

哦,我忘了提及我也尝试在 GraphEditPlus 中构建图表,但问题仍然存在,这是该图表的链接:http://www2.picturepush.com/photo/a/8030745/img/8030745.png http://www2.picturepush.com/photo/a/8030745/img/8030745.png

目前,我正在 DirectShow.NET 示例中的 CapWMV 示例上测试我的所有更改。

请提供任何建议,我将不胜感激,我绝望了:/

Thanks,

Eran.

Update:

音频和视频之间似乎有一个恒定的 500ms 间隙,如果我使用 virtualDub 将音频延迟 500ms 看起来不错,如何在图中设置它?


您的音频流延迟等于捕获缓冲区的大小。也就是说,您获得了 0.5 秒后开始捕获的完整缓冲区。您需要使用较小的缓冲区和/或在缓冲区上应用偏移来调整延迟。

See:

  • 最大限度地减少 DirectShow 中的音频捕获延迟 http://sid6581.wordpress.com/2006/10/09/minimizing-audio-capture-latency-in-directshow/
  • 如何消除 DirectShow 过滤器链中 1 秒的延迟? (使用Delphi和DSPACK) https://stackoverflow.com/questions/7881420/how-to-eliminate-1-second-delay-in-directshow-filter-chain-using-delphi-and-ds

IAMBufferNegotiation http://msdn.microsoft.com/en-us/library/windows/desktop/dd389142%28v=vs.85%29.aspx是关键字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 DirectShow.NET 的音频同步问题 的相关文章

  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 转发声明和包含

    在使用库时 无论是我自己的还是外部的 都有很多带有前向声明的类 根据情况 相同的类也包含在内 当我使用某个类时 我需要知道该类使用的某些对象是前向声明的还是 include d 原因是我想知道是否应该包含两个标题还是只包含一个标题 现在我知
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • Windows 和 Linux 上的线程

    我在互联网上看到过在 Windows 上使用 C 制作多线程应用程序的教程 以及在 Linux 上执行相同操作的其他教程 但不能同时用于两者 是否存在即使在 Linux 或 Windows 上编译也能工作的函数 您需要使用一个包含两者的实现
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 如何从类方法中调用全局函数

    我有以下代码 def static func name print Name name class A def init self name self name name def fun self static func self name
  • GWT MVP - 维护多个彼此独立的显示

    我有一个 GWT 应用程序 并且正在将 GWT MVP 与地点 活动一起使用 我的应用程序布局是这样的 菜单 内容 菜单和内容显示将动态变化 并且其中一个变化独立于另一个 我的意思是 当内容显示发生变化时 我不想更新菜单显示 反之亦然 两个
  • typeof(DateTime?).Name == Nullable`1

    在 Net 中使用反射typeof DateTime Name返回 可空 1 有什么方法可以将实际类型作为字符串返回 在本例中为 DateTime 或 System DateTime 我明白那个DateTime is Nullable
  • 如何在 iOS 中向 PHP 发送 GEt 请求

    您好 我在向 PHP 发送 GET 请求时遇到问题 相同的 PHP 在 Web 浏览器中运行时工作正常 这是 PHP 和 Obj C 的代码片段 PHP var1 GET value1 var2 GET value2 当我在浏览器中调用它时
  • Android 项目的 tab+swipe 应用程序中不同选项卡的不同菜单

    我是 android 应用程序和 java 的初学者 基本上我是 PHP 开发人员 我有一个选项卡 滑动应用程序的项目 经销商 java 在 res menu 文件夹中为 menu a xml 和 menu b xml 创建菜单 xml 文
  • CoreData - 将实体的属性设置为不为空 - 属性应该设置为可选还是强制

    我需要将 Coredata 实体中的一个属性设置为非空并具有默认值 我已在 xcdatamodeld 架构定义中为实体的属性设置了默认值 我的问题是该属性是否应该标记为可选 如果我不检查属性的以下三个属性 Transient Optiona
  • 如何在sql server中选择彼此相隔一小时的记录

    我有一组带有时间戳的 user id 登录数据 用户可以多次登录 但我们需要从最短记录开始返回至少相隔一小时的记录 重复数据删除必须在用户级别进行 可以有多个用户 for eg 用户1 2012 03 07 14 24 30 000 用户1
  • 使用javascript获取外部url的文档

    我有一个 html 表单 它接受 url 作为 txt 输入和提交按钮 当我单击按钮时 我想访问提供的 url 的文档模型 我如何使用 javascript 访问该 url 的文档 如果您向该 url 发出 HTTP GET 请求 您将收到
  • std::initializer_list 作为构造函数的模板参数

    考虑一个从 std 容器继承的类 其模板构造函数调用容器的底层构造函数 此模板构造函数适用于简单的复制和移动构造函数 但不适用于initializer list 构造函数 template
  • DT:根据 R 闪亮应用程序中另一列的选择输入动态更改列值

    我正在尝试创建一个表 使用 DT 请不要使用 rhandsontable 该表几乎没有现有列 一个 selectinput 列 其中每行都有可供选择的选项 最后是另一列 该列将根据用户选择的内容进行填充从每行的 selectinput 下拉
  • 为什么 Internet Explorer 8 中会出现此泄漏?

    为什么下面的代码会泄漏 for var i 0 i lt 100 i var item item elem document createElement div document body appendChild item elem ite
  • 带请求正文的 Elasticsearch GET 请求

    将请求正文与 GET 请求一起传递不是违反 REST 风格的方法吗 例如在Elasticsearch中过滤一些信息 curl localhost 9200 megacorp employee search d query filtered
  • iTextSharp 5 波兰语字符

    我在使用 itextSharp 处理波兰语字符时遇到问题 我想从 html 创建 pdf 一切都很好 但缺少波兰特色 我使用较低的功能 private void createPDF string html MemoryStream msOu
  • 在 Common Lisp 中替换列表中的项目?

    我有一个事物列表 我称之为 L 一个索引 N 和一个新事物 NEW 如果我想用 NEW 替换 L 中 N 中的内容 最好的方法是什么 我是否应该获取到 N 的子列表以及从 N 到列表末尾的子列表 然后使用列表将第一部分 NEW 和最后一部分
  • Prometheus 标签与矢量时间戳的比较

    我有一个像 T V label UTCtimestamp 这样的向量 其中 label UTC 时间戳字符串 我想找到具有类似标签的所有向量的计数 T 1day 其中 T 是 Vector 被推送的时间戳 我正在寻找一些查询 例如 V T
  • C++11 外部模板:我们在哪里真正需要它们?

    在 C 03 中我们有模板显式实例化定义 template class Foo
  • 从 USB 可移动存储读取文件

    在我的应用程序中 我想从 USB 可移动存储读取文件 我有一个 txt 我想阅读它 void read UsbManager manager UsbManager getSystemService Context USB SERVICE H
  • 我们如何处理快速增长得非常大的交集表?

    例如 我们有表A和表B 它们之间存在多对多关系 表 C 是一个交集表 存储 A id 和 B id 以及表示两者之间关系的值 或者作为一个具体的例子 想象一下 stackexchange 有一个用户帐户 一个论坛和一个业力分数 或者 一个学
  • 如何在 1.6 中禁用 JTable 中的所有排序代码

    我有一个 JTable 扩展 自 Java 1 3 1 4 以来一直在项目中使用 它提供了列重新排序和通过单击列进行排序等功能 我们正在升级到 Java 1 6 新的 JTable 会停止旧的排序代码的工作 要使所有内容都适合新的 JTab
  • 使用 DirectShow.NET 的音频同步问题

    我已经在 DirectShow NET 论坛上启动了一个主题 这里是链接http sourceforge net projects directshownet forums forum 460697 topic 5194414 index