gpt4 book ai didi

c# - 如何使用 MediaStreamSource 播放原始广告 AAC 流?

转载 作者:太空宇宙 更新时间:2023-11-03 14:05:25 24 4
gpt4 key购买 nike

有人用过这个吗?我相信我搞砸了 CodecPrivateData,但我找不到任何似乎有效的 WAVEFORMTEX FormatTags。我尝试了 0xFF00、0x1016 和 0x0116。我使用 MSDN 文档来完成字符串的其余部分。

我在 MMReg.h (WAVE_FORMAT_MPEG_ADTS_AAC 0x1600) 中找到了这个,它有一个 FormatTag(0x0016)。你会认为这是我应该使用的,但这也不起作用。

使用 0xFF 时,如果我避免重复调用流 GetSampleAsync 中的 adts header ,但没有播放。我知道流媒体很好,因为我可以在 FooBar、VLC 和 Window Media Player 中播放它。当我将原始 AAC 插入 MP4 容器时,它在 silverlight 中工作正常,所以我知道 silverlight 支持 AAC 设置。

有人可以向我提供适用于他们的十六进制 CodecPrivateData 字符串吗?

编辑:

这是我认为应该有效的 PrivateCodecData 十六进制字符串的示例:

0x1016010080BB0000E02E0000010000000E000100FE0000000000000000001190

此字符串直接从 OpenMediaAsync() 到 CloseMedia(),甚至没有尝试样本。 MSDN 文档示例做同样的事情发现 here .我希望它至少在关闭前尝试一个示例。

最佳答案

Silverlight 似乎不符合 AAC 和 ADTS 包装...

如果您分析您的 MP4 文件(例如使用 MediaInfo),您将看到 AAC 音频但没有 ADTS 包装器。这就是为什么 Silverlight 可以在这种情况下读取嵌入在 MP4 文件中的 AAC 音频。

因此,在调用 MediaStreamSource 中的 ReportSampleCompleted() 之前,您需要删除每个音频样本的 ADTS header 。 ADTS header 由 7 或 9 个字节组成(不带或带 CRC)。有关 ADTS header 的更多信息,see this link .

显然,您需要使用正确的 FormatTag 调整 CodecPrivateData 字符串。这是我的 AAC LC 48KHz @96Kbps 文件:FF00020080BB0000E02E0000040010000200

关于c# - 如何使用 MediaStreamSource 播放原始广告 AAC 流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com