【问题标题】:Forward and Backward audio in Media Element UWPMedia Element UWP 中的前进和后退音频
【发布时间】:2017-08-02 09:16:00
【问题描述】:

我正在开发与 UWP 兼容的 Xamarin.Forms 应用程序。我的要求是播放、暂停、前进、后退录制的音频文件。为此,我在 Xamarin.Forms 可移植项目中创建了一个界面

    public interface IRecordAudio 
    {        
         Task<TimeSpan> SetSource(Stream _stream);
         void PlayAudio();
         void ForwardAudio();
         void RewindAudio();
         void PauseAudio();
    }

并且接口的实现在UWP项目中如下:

   public class RecordAudioUWP : IRecordAudio
   { 
        public async Task<TimeSpan> SetSource(Stream _stream)
        {
             StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
             var folder = await local.GetFolderAsync("Recordings");
             var file = await folder.GetFileAsync("MySound.MP3");
             var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
             element.SetSource(stream, "");
             MusicProperties properties = await 
             file.Properties.GetMusicPropertiesAsync();
             TimeSpan myTrackDuration = properties.Duration;
             return myTrackDuration;
         }

         public void PlayAudio()
         {
             element.Play();
         }

         public void ForwardAudio()  //Not Working
         {
             element.Position += TimeSpan.FromSeconds(10);
         }

         public void PauseAudio()
         {
             element.Pause();
         }

         public void RewindAudio()  //Not Working
         {
             element.Position -= TimeSpan.FromMinutes(1);
         } 
   }

音频的来源已正确设置。音频正确播放和暂停。我在前进和后退音频文件时遇到问题。

请让我知道我哪里做错了。谢谢

【问题讨论】:

    标签: c# xamarin uwp xamarin.forms


    【解决方案1】:

    在 Windows 10 版本 1607 及更高版本中,我们建议您使用 MediaPlayerElement 代替 MediaElement。 MediaPlayerElement 具有与 MediaElement 相同的功能,同时还支持更高级的媒体播放场景。此外,媒体播放方面的所有未来改进都将在 MediaPlayerElement 中进行。

    您可以使用MediaPlayerElement 代替MediaElement,如下所示:

    public class RecordAudioUWP : IRecordAudio
    {
        private MediaPlayerElement element;      
        private MediaPlayer player;
        public async Task<TimeSpan> SetSource(Stream _stream)
        {
            element = new MediaPlayerElement();
    
            StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
            var folder = await local.GetFolderAsync("Recordings");
            var file = await folder.GetFileAsync("MySound.MP3");
            var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
            element.Source = MediaSource.CreateFromStream(stream,"");
    
            player = element.MediaPlayer;
            MusicProperties properties = await
            file.Properties.GetMusicPropertiesAsync();
            TimeSpan myTrackDuration = properties.Duration;
            return myTrackDuration;
        }
    
        public void PlayAudio()
        {
            player.Play();
        }
    
        public void ForwardAudio()  
        {
            var session = player.PlaybackSession;
            session.Position += TimeSpan.FromSeconds(10);  
    
        }
    
        public void PauseAudio()
        {
            player.Pause();
        }
    
        public void RewindAudio() 
        {
            var session = player.PlaybackSession;
            session.Position -= TimeSpan.FromMinutes(1);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多