Как воспроизвести необработанный рекламный поток AAC с помощью MediaStreamSource? - PullRequest
2 голосов
/ 24 февраля 2012

У кого-нибудь это работает?Я полагаю, что у меня испорчены CodecPrivateData, но я не могу найти какие-либо теги формата WAVEFORMTEX, которые, кажется, работают.Я пробовал 0xFF00, 0x1016 и 0x0116.Я использовал документацию MSDN для завершения остальной части строки.

Я нашел это в MMReg.h (WAVE_FORMAT_MPEG_ADTS_AAC 0x1600), который будет иметь FormatTag (0x0016).Вы могли бы подумать, что это то, что я должен использовать, но это тоже не работает.

При использовании 0xFF, если я не использую заголовки adts в потоке, GetSampleAsync вызывается повторно, но воспроизведение отсутствует.Я знаю, что поток хорош, потому что я могу проигрывать его в FooBar, VLC и Window Media Player.Когда я вставляю необработанный AAC в контейнер MP4, он отлично работает в silverlight, поэтому я знаю, что параметр AAC поддерживается silverlight.

Может ли кто-нибудь предоставить мне шестнадцатеричную строку CodecPrivateData, которая подойдет ему?

Редактировать:

Это пример шестнадцатеричной строки PrivateCodecData, которая, я думаю, должна работать:

0x1016010080BB0000E02E0000010000000E000100FE000000000000000000001190

* 1016прямо из OpenMediaAsync () в CloseMedia (), даже не пробуя пример.Пример документации MSDN делает то же самое, что найдено здесь .Я ожидал бы, что он хотя бы попробует образец перед закрытием.

1 Ответ

1 голос
/ 29 ноября 2012

Silverlight не совместим с оболочкой AAC и ADTS ...

Если вы проанализируете файл MP4 (например, с MediaInfo), вы увидите AAC для аудио, но без оболочки ADTS.Вот почему Silverlight может в этом случае читать ваше аудио AAC, встроенное в файл MP4.

Так что вам нужно удалить заголовок ADTS для каждого образца звука перед вызовом ReportSampleCompleted () в MediaStreamSource.Заголовок ADTS состоит из 7 или 9 байтов (без или с CRC).Для получения дополнительной информации о заголовке ADTS, см. Эту ссылку .

Очевидно, что вам нужно адаптировать строку CodecPrivateData с помощью правильного FormatTag.Вот мой файл для файла AAC LC 48 кГц @ 96 Кбит / с: FF00020080BB0000E02E0000040010000200

...