Как воспроизвести несколько файлов mp3 / wma одновременно? - PullRequest
4 голосов
/ 25 апреля 2011

Мне нужно одновременно воспроизвести несколько звуковых эффектов в моем приложении WP7.В настоящее время он работает с файлами WAV, который занимает около 5 мегабайт, вместо 500 КБ при кодировании в wma / mp3.

Текущая часть кода:

 Stream stream = TitleContainer.OpenStream(String.Format("/location/{0}.wav", value)
 SoundEffect effect = SoundEffect.FromStream(stream);
 effect.Play();

Это прекрасно работает вцикл, подготовка всех эффектов, а затем их воспроизведение.

Однако я бы очень хотел использовать mp3 / wma / what-codec для уменьшения размера моего xap-файла.

Я пытался использовать MediaElement, но, похоже, вы также не можете использовать это для воспроизведения нескольких файлов.Кроме того, XNA MediaPlayer не может быть создан, и, насколько я знаю, не может быть воспроизведено несколько файлов одновременно.

Единственное решение, которое я вижу, это то, что я каким-то образом декодирую mp3 на wav и скормите это Stream на SoundEffect.

Есть идеи о том, как выполнить многократное воспроизведение?Или предложения о том, как декодировать mp3 в wav?

1 Ответ

3 голосов
/ 26 апреля 2011

О преобразовании ... извините, но я не думаю, что в настоящее время есть какие-либо API для декодирования WMA или MP3.

Кроме того, я не думаю, что есть какие-либо реализации MP3, WMA илиOgg-декодеры, доступные в чистом коде c # - все, что я видел, используют DirectShow или PInvoke - например, см. C # Audio Library .

Я лично ожидаю сжатия / распаковки аудио / видеобыть доступным в какой-то момент в ближайшем будущем в API WP7 - но я не могу догадаться, когда!

Для некоторого простого сжатия вы можете попробовать такие вещи, как доставка моно вместо стереофайлов или 8 бит16-битные аудиофайлы - их легко конвертировать обратно в 16-битные (с очевидной потерей разрешения) на телефоне.

Использование сжатия, такого как zip, также может помочь для некоторых звуковых эффектов ... но я бы не сталЯ не ожидаю, что он будет чрезвычайно успешным.

...