使用 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 的音频同步问题 的相关文章

  • GetType() 在 Type 实例上返回什么?

    我在一些调试过程中遇到了这段代码 private bool HasBaseType Type type out Type baseType Type originalType type GetType baseType GetBaseTyp
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 查看 NuGet 包依赖关系层次结构

    有没有一种方法 文本或图形 来查看 NuGet 包之间的依赖关系层次结构 如果您使用的是新的 csproj 您可以在此处获取所有依赖项 在项目构建后 项目目录 obj project assets json
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • 如何在richtextbox中使用多颜色[重复]

    这个问题在这里已经有答案了 我使用 C windows 窗体 并且有 richtextbox 我想将一些文本设置为红色 一些设置为绿色 一些设置为黑色 怎么办呢 附图片 System Windows Forms RichTextBox有一个
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

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

    我有以下代码 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