- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Delphi 6 Pro 和 DSPACK DirectShow 组件库来创建一个 DirectShow 过滤器,该过滤器从自定义音频源提供 Wav 格式的数据。需要明确的是,我将原始 PCM 音频样本作为字节数据提供。不涉及 Wave 文件,但我的 Filter Graph 下游的其他 Filter 期望输出引脚以字节形式提供标准 WAV 格式样本数据。
注意:当我从自定义音频源获取数据时,我将其格式化为所需的 channel 数、采样率和每个样本的位数,并将其存储在我创建的 TWaveFile 对象中。该对象具有正确格式化的 TWaveFormatEx 数据成员,该数据成员已正确设置以反射(reflect)我存储的数据的基础格式。
我不知道如何在 GetMediaType() 调用期间正确设置 MediaType 参数:
function TBCPushPinPlayAudio.GetMediaType(MediaType: PAMMediaType): HResult;
.......
with FWaveFile.WaveFormatEx do
begin
MediaType.majortype := (1)
MediaType.subtype := (2)
MediaType.formattype := (3)
MediaType.bTemporalCompression := False;
MediaType.bFixedSizeSamples := True;
MediaType.pbFormat := (4)
// Number of bytes per sample is the number of channels in the
// Wave audio data times the number of bytes per sample
// (wBitsPerSample div 8);
MediaType.lSampleSize := nChannels * (wBitsPerSample div 8);
end;
(1)、(2) 和 (3) 的正确值是多少?我了解 MEDIATYPE_Audio、MEDIATYPE_Stream 和 MEDIASUBTYPE_WAVE GUID 常量,但我不确定它们的去向。
此外,我假设我需要将 WaveFormatEx 结构/记录从 FWaveFile 对象复制到 pbFormat 指针 (4)。我对此有两个问题:
1) 我认为应该使用 CoTaskMemAlloc() 创建一个新的 TWaveFormatEx 对象,并将我的 FWaveFile 对象的 TWaveFormatEx 对象复制到它上面,然后再将 pbFormat 指针分配给它,对吗?
2) TWaveFormatEx 是要传递的正确结构吗?以下是 TWaveFormatEx 的定义方式:
tWAVEFORMATEX = packed record
wFormatTag: Word; { format type }
nChannels: Word; { number of channels (i.e. mono, stereo, etc.) }
nSamplesPerSec: DWORD; { sample rate }
nAvgBytesPerSec: DWORD; { for buffer estimation }
nBlockAlign: Word; { block size of data }
wBitsPerSample: Word; { number of bits per sample of mono data }
cbSize: Word; { the count in bytes of the size of }
结束;
更新:2011 年 12 月 11 日
我想强调 @Roman R 附加在他接受的回复中的评论之一,他告诉我使用 MEDIASUBTYPE_PCM 作为子类型,因为它非常重要。我花费了大量时间来追查 DirectShow“无中间过滤器组合”错误,因为我忘记了为子类型使用该值并且正在(错误地)使用MEDIASUBTYPE_WAVE 相反。 MEDIASUBTYPE_WAVE 与许多其他过滤器(例如系统捕获过滤器)不兼容,这是失败的根本原因。这里更大的教训是,如果您正在调试过滤器间媒体格式协商错误,请确保所连接的引脚之间的格式完全相同。我在最初的调试过程中犯了一个错误,即只比较引脚之间相同的 WAV 格式参数(格式标签、 channel 数、每个样本的位数、采样率)。但是由于我对 MEDIASUBTYPE_WAVE 使用不当导致子类型的差异导致引脚连接失败。一旦我按照 Roman 的建议将子类型更改为 MEDIASUBTYPE_PCM,问题就消失了。
最佳答案
(1) 是MEDIATYPE_Audio
。
(2) 通常是从 FOURCC 代码到 GUID 的映射,请参阅 Media Types ,音频媒体类型部分。
(3) 是 FORMAT_WaveFormatEx
。
(4) 是指向 WAVEFORMATEX
结构的指针(通常由 COM 任务内存分配器 API 分配)。
1) - 是的,您应该分配内存,通过直接复制或初始化将有效数据放在那里,然后将此指针放入 pbFormat
并将结构大小放入 cbFormat
。
2) - 是的,它看起来不错,它首先是这样定义的:WAVEFORMATEX structure .
关于delphi - 传送 Wav 音频数据的 DirectShow 过滤器的媒体类型设置是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909947/
Pygame 我想知道是否有人知道如何在触摸或越过某些东西时交换 map 。 这是我的代码: import pygame, sys from pygame.locals import * pygame
我正在尝试使用以下代码将用户传送到他们自己的领域: @EventHandler public static void onPortalTravel(PlayerPortalEvent event) t
我想要对不同选项的简要介绍。 最佳答案 来自 Wikipedia Embedded in an SWF file using the Flash authoring tool (supported i
我正在尝试创建一个简单的程序来刺激二进制系统中恒星的旋转,但是当我运行程序时,其中一个“恒星”出现故障,实际上是围绕给定路径传送到不同位置。我怎样才能解决这个问题?这是代码: import pygam
我不会java(一般用c写) 我怎样才能有效地进行某种位 block 传送方式java中的像素数组内容到窗口上? 我需要(在循环中)将像素[][]传输到窗口上 我可以使用类似的东西 pixels[]
我遇到了无法通过 TestFlight 安装我的应用程序的 Ad Hoc 版本的问题。应用程序下载,但在安装步骤中显示类似“无法安装 YourApp”的内容,控制台上显示以下消息: Sep 17 16
如果我使用 Eazfuscator 混淆 vb.net 程序集并启用符号名称加密(以便我可以使用 Eazfuscator 堆栈跟踪解码器),如果我发送 PDB 文件,这是否有效地撤消?我想发送 PDB
我使用 Delphi 6 Pro 和 DSPACK DirectShow 组件库来创建一个 DirectShow 过滤器,该过滤器从自定义音频源提供 Wav 格式的数据。需要明确的是,我将原始 PCM
我正在尝试发布一个执行一些 RMI 调用的 Java 应用程序。 我需要将其作为 JAR 文件发送(这是一个要求,没有办法解决)。 现在,为了允许某些事情(例如套接字和 RMI 连接),我需要一个 S
在 Vue 3 中,可以使用 Teleport body 的一个组件像这样标记: Open full screen modal! (With teleport!)
由于 Netty Channel 使用单个线程进行入站和出站处理,我很想知道在使用多路复用协议(protocol)(例如 SPDY)时传送入站数据的推荐做法。想到的几个选项: 1) 使用 channe
我基本上想这样做: $_ = "some content that need to be escaped &>|\"$\'`\s\\"; qx{echo $_ | foo} 这里有两个问题。先是$_的
我想使用 Kurento 作为媒体服务器,它将 WebRTC 作为输入并提供 RTSP 流作为 url:rtsp://kurento/streamName 这可能吗? 我看到了https://gith
我的理解是,在 Azure AMS V2 上,您可以进行混合 key 分发,您可以从另一台服务器(例如 S3)流式传输加密的媒体内容,并仅使用 Azure 作为 key 服务器。 This is my
我目前正在尝试通过用于控制视频访问的 PHP 脚本传送 MP4 视频以用于 HTML5 视频(使用 video-js)。经过一些研究,在 stackoverflow article found her
我使用以下命令将 sed 的输出重定向到 tmp 文件: grep --include=*.txt -A 3 -rnw abx/ -F -e 'simple' | sed -n 's#.*/\([^/
我有一个 PHP 文件,它的唯一工作是检查用户是否登录 + 是否设置了 session 变量,然后通过 nginx X-Sendfile 传送文件。它在任何桌面浏览器和以前的任何移动浏览器上都能完美运
我在 2014 年 1 月 24 日悄悄地向 iOS 应用商店交付了一个应用。这是一款仅限 iO7/iPhone 的应用程序,所有内容均已正确交付。截至昨天,我的应用程序已获批准,目前可以在 App
我是一名优秀的程序员,十分优秀!