На WP7 можно ли воспроизвести песню из библиотеки, прервать ее звуком в формате mp3 и возобновить воспроизведение? - PullRequest
2 голосов
/ 19 мая 2011

что я хочу достичь, это:

  1. Воспроизведение фоновой музыки из библиотеки мультимедиа
  2. На определенном триггере затухание музыки, воспроизведение другого mp3-файла (различной длительности, с точностью до минуты)
  3. После воспроизведения этого аудио возобновите предыдущую музыку из библиотеки

Теперь я столкнулся с этими ограничениями:

  • Для доступа и воспроизведения музыки из библиотеки пользователя мне нужно использовать класс MediaPlayer XNA.
  • Для воспроизведения произвольного mp3-файла мне нужно использовать либо MediaPlayer, либо MediaElement, но не SoundEffect или SoundEffectInstance
  • Если я играю что-либо с помощью MediaElement, MediaPlayer останавливается. Это полностью теряет аудио-очередь, поэтому мне нужно было бы проиграть оставшуюся музыку, что было бы нормально, НО
  • MediaPlayer не поддерживает поиск, поэтому я не могу открыть предыдущую песню и просто перейти на позицию, пока она не была приостановлена ​​

Итак:

  • Я не хочу использовать SoundEffect или SoundEffectInstance, поскольку аудио должен быть wav-файлом.
  • Я не могу использовать только MediaPlayer, потому что, если я воспроизведу аудио там, чтобы прервать песню, я не смог бы найти ее предыдущую позицию
  • Я не могу использовать комбинацию MediaPlayer и MediaElement, так как MediaPlayer останавливает MediaPlayer, что снова не позволяет мне возобновить предыдущее воспроизведение
  • Я не могу просто использовать MediaElement, потому что он не может воспроизводить песни из библиотеки

Видите ли вы что-то, что я пропустил, или это действительно единственная возможность, которую я должен смирить и использовать wav-файлы? (Многие из них будут загружены на лету, и это просто неэффективно!) Есть предложения?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

К сожалению, вы столкнулись с ограничением платформы.

В дополнение к альтернативе, которую вы определили, вы можете воспроизводить музыку, передаваемую из внешнего источника через MediaElement.При использовании таймера для отслеживания того, сколько воспроизведено, при возобновлении дорожки начните это далеко через дорожку, включив начальную точку в запрос к потоковому серверу.Это, конечно, означает, что вам нужно предоставить или найти подходящую возможность потоковой передачи.: (

Ни один из них не идеален, но на данный момент это лучшее, что у нас есть. Возможности фонового аудио, поступающие в Манго, могут помочь, но пока детали не объявлены, мы не можем сказать наверняка.

0 голосов
/ 19 марта 2012

не может использовать только MediaPlayer, потому что, если я воспроизведу аудио там, чтобы прервать песню, я не смог бы искать ее предыдущую позицию

Вы получите событие mediastatechanged с использованием MediaPlayer и в этом случае вы можетепроверьте состояние медиаплеера и приостановите песню, а затем вы также можете возобновить песню

...