Windows Phone 7 Media Element wav пауза - PullRequest
0 голосов
/ 22 декабря 2010

Я записываю звук с микрофона. Затем я сохраняю PCM с заголовком wav в изолированном хранилище. После этого я играю с помощью MediaElement. Я хочу иметь возможность приостановить песню, но это кажется невозможным. Я пытался использовать SmoothStreamingMediaElement, но проблема была та же - возможно, я сделал что-то не так.

Если кто-нибудь знает, как приостановить песню с микрофона, пожалуйста, помогите.

Вот мой код, но пауза не работает. Может быть, я могу прочитать файл по-другому?

            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var audio = store.OpenFile(_song_path, FileMode.Open, FileAccess.Read))
                {
                    _media_element.MediaOpened += new RoutedEventHandler(_media_element_MediaOpened);
                    _media_element.SetSource(audio);
                    audio.Close();
                }
            }

Приостановка кода довольно проста:)

private void button2_Click(object sender, RoutedEventArgs e)
    {
        _media_element.Pause();
    }

Для тестирования я сделал простой проект с возможностью загрузки файлов из Интернета и воспроизведения их из изолированного хранилища. Он работает с WMV и MP3, но не с WAV. Вот VS проект DowloadingAndPlayingWav

Если у кого-то есть идеи, просьба помочь. Я взломал, вероятно, весь интернет - нет решения этой проблемы.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

Для тех, кто все еще интересуется этой темой (возможно, из поиска), я подумал, что поделюсь, как я справился с этим в моем приложении (Rapid Recorder).

Я не мог найти правильный способ сделать паузу, но его легко подделать.Когда нажата кнопка паузы, вы просто сохраняете текущую позицию воспроизведения и останавливаете воспроизведение.Когда вы нажимаете кнопку воспроизведения, вы можете просто установить свою позицию снова после начала воспроизведения.Вот некоторые фрагменты:

private TimeSpan _pausedPosition;

Для паузы:

_pausedPosition = Player.Position;
Player.Stop();

Для воспроизведения:

Player.Play();
if (_pausedPosition != TimeSpan.Zero) Player.Position = _pausedPosition;
0 голосов
/ 22 декабря 2010

MediaElement имеет метод Pause. Вы пытались использовать это?

...