有人有这个工作吗?我相信我有CodeCprivateData搞砸了,但我找不到似乎工作的任何WaveFormtex Formattags。我尝试了0xFF00,0x1016和0x0116。我使用MSDN文档来完成其余字符串。

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

如果使用0xFF,如果我避免流中的ADTS标题,则重复调用GetSampleasync,但没有播放。我知道溪流很好,因为我可以在Foobar,VLC和Window媒体播放器中播放它。当我将原始AAC粘到MP4容器中时,它在Silverlight中正常工作,所以我知道Silverlight支持AAC设置。

有人可以向我提供一个为他们工作的十六进制编解码器吗?

编辑:

这是我认为应该工作的privateCodecdata十六进制字符串的示例:

0x1016010080BB000000000000000000000000119000000000000000000000000000000000000000000000000000000000000/000000000000000000000011900000000001190

此字符串从OpenMediaAsync()直接到Closemedia(),而不尝试样本。 MSDN文档示例是相同的东西
。我希望在结束前至少尝试样品。

有帮助吗?

解决方案

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



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

因此,在MediaStreamSource中调用ReportSampleCompleted()之前,您需要删除每个音频样本的ADTS标题。ADTS头部由7或9字节(无或CRC)组成。有关ADTS标题的更多信息,请请参阅此链接

显然,您需要使用正确的Formattag调整CodeCprivatedata String。这是我的AAC LC 48kHz @ 96kbps文件:ff00020080bb0000e02e0000040010000200

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top