C# 媒体元素UWP中的前向和后向音频
我正在开发与UWP兼容的Xamarin.Forms应用程序。我的要求是播放、暂停、向前、向后录制的音频文件。为此,我在Xamarin.Forms可移植项目中创建了一个接口C# 媒体元素UWP中的前向和后向音频,c#,xamarin,uwp,xamarin.forms,C#,Xamarin,Uwp,Xamarin.forms,我正在开发与UWP兼容的Xamarin.Forms应用程序。我的要求是播放、暂停、向前、向后录制的音频文件。为此,我在Xamarin.Forms可移植项目中创建了一个接口 public interface IRecordAudio { Task<TimeSpan> SetSource(Stream _stream); void PlayAudio(); void ForwardAudio();
public interface IRecordAudio
{
Task<TimeSpan> SetSource(Stream _stream);
void PlayAudio();
void ForwardAudio();
void RewindAudio();
void PauseAudio();
}
公共接口IRecordAudio
{
任务集合源(流_流);
无效播放音频();
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);
}
}
公共类RecordAudioUWP:IRecordAudio
{
公共异步任务集合源(流_流)
{
StorageFolder local=Windows.Storage.ApplicationData.Current.LocalFolder;
var folder=await local.GetFolderAsync(“录制”);
var file=await folder.GetFileAsync(“MySound.MP3”);
var stream=await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
元素。SetSource(流“”);
MusicProperties属性=等待
GetMusicPropertiesAsync();
TimeSpan myTrackDuration=properties.Duration;
返回myTrackDuration;
}
公共播放音频()
{
元素Play();
}
public void ForwardAudio()//不工作
{
元素位置+=从秒开始的时间跨度(10);
}
公共空间
{
元素Pause();
}
public void RewindAudio()//不工作
{
元素位置-=时间跨度从分钟(1);
}
}
音频源已正确设置。音频已正确播放和暂停。我在向前和向后播放音频文件时遇到问题
请让我知道我哪里做错了。谢谢
在Windows 10、build 1607和on中,我们建议您使用MediaPlayerElement代替MediaElement。MediaPlayerElement具有与MediaElement相同的功能,同时还支持更高级的媒体播放方案。此外,媒体播放的所有未来改进都将在MediaPlayerElement中实现
您可以使用MediaPlayerElement
代替以下内容:
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);
}
}
公共类RecordAudioUWP:IRecordAudio
{
私有媒体要素;
私人媒体播放器;
公共异步任务集合源(流_流)
{
元素=新的MediaPlayerElement();
StorageFolder local=Windows.Storage.ApplicationData.Current.LocalFolder;
var folder=await local.GetFolderAsync(“录制”);
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属性=等待
GetMusicPropertiesAsync();
TimeSpan myTrackDuration=properties.Duration;
返回myTrackDuration;
}
公共播放音频()
{
player.Play();
}
公共音频
{
var会话=player.PlaybackSession;
session.Position+=时间跨度从秒(10);
}
公共空间
{
player.Pause();
}
公共空间
{
var会话=player.PlaybackSession;
session.Position-=TimeSpan.FromMinutes(1);
}
}