2

誰かがこれを機能させていますか?CodecPrivateData が台無しになっていると思いますが、動作しているように見える WAVEFORMTEX FormatTags が見つかりません。0xFF00、0x1016、0x0116 を試しました。MSDN ドキュメントを使用して、残りの文字列を完成させました。

これは、FormatTag(0x0016) を持つ MMReg.h (WAVE_FORMAT_MPEG_ADTS_AAC 0x1600) で見つかりました。これは私が使うべきものだと思うかもしれませんが、それもうまくいきません。

0xFF を使用すると、ストリーム GetSampleAsync の adts ヘッダーが繰り返し呼び出されますが、再生されません。FooBar、VLC、および Window Media Player で再生できるので、ストリームが優れていることはわかっています。生の AAC を MP4 コンテナーに貼り付けると、Silverlight で正常に動作するため、AAC 設定が Silverlight でサポートされていることがわかります。

誰かが彼らのために働いた16進数のCodecPrivateData文字列を私に提供できますか?

編集:

これは、動作すると思われる PrivateCodecData 16 進文字列の例です。

0x1016010080BB0000E02E0000010000000E000100FE000000000000000001190

この文字列は、サンプルを試すことなく OpenMediaAsync() から CloseMedia() に直接移行します。MSDN ドキュメントの例は、ここにあるのと同じことを行います。閉じる前に、少なくともサンプルを試すことを期待しています。

4

1 に答える 1

1

Silverlight は AAC および ADTS ラッパーに準拠していないようです...

MP4 ファイルを (たとえば MediaInfo を使用して) 分析すると、オーディオの AAC が表示されますが、ADTS ラッパーは表示されません。これが、この場合、Silverlight が MP4 ファイルに埋め込まれた AAC オーディオを読み取ることができる理由です。

そのため、MediaStreamSource で ReportSampleCompleted() を呼び出す前に、各オーディオ サンプルの ADTS ヘッダーを削除する必要があります。ADTS ヘッダーは、7 または 9 バイト (CRC なしまたはあり) で構成されます。ADTS ヘッダーの詳細については、このリンクを参照してください

明らかに、CodecPrivateData 文字列を適切な FormatTag に適合させる必要があります。これが私の AAC LC 48KHz @96Kbps ファイルです: FF00020080BB0000E02E0000040010000200

于 2012-11-29T16:33:08.693 に答える