首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaElement体积-速度

MediaElement体积-速度
EN

Stack Overflow用户
提问于 2018-04-26 13:53:29
回答 1查看 903关注 0票数 0

我正在用MediaElement构建一个UWP应用程序。

我希望能够改变MediaElement的音量和播放速度,但是我的代码不能正常工作。

如果我在第一次演奏之前设定了音量和速度,但是如果我改变了。播放后的音量不会改变音量。

我的代码:

代码语言:javascript
复制
Private mElement As MediaElement

Private Async Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    mElement = New MediaElement
    AddHandler mElement.MediaEnded, AddressOf OnMediaEnded
End Sub

Async Function SayAsync(ByVal text As String) As Task
    If Synth Is Nothing Then
        Dim chosenVoice = SpeechSynthesizer.AllVoices.First(Function(v) v.DisplayName.Contains(cboVoice.SelectedItem.ToString))
        Synth = New SpeechSynthesizer() With {.Voice = chosenVoice}
    End If
    currentStream = Await Synth.SynthesizeTextToStreamAsync(text)
    mElement.Volume = SpeechVol / 100
    mElement.PlaybackRate = SpeechSpeed / 100
    mElement.SetSource(currentStream, String.Empty)
    mElement.Play()
End Function

Private Sub OnMediaEnded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    currentStream?.Dispose()
    currentStream = Nothing
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 06:10:36

通过在我这边的测试,当音频播放时,Volume可以被正确地改变。由于您的代码片段只是整体的一部分,下面是一个完整的演示程序,可以在我这边很好地工作:

XAML

代码语言:javascript
复制
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}" x:Name="rootgrid"> 
   <Button x:Name="btnstart" Click="btnstart_Click" Content="start play"></Button>
   <Button x:Name="btnchangevolume" Click="btnchangevolume_Click" Content="change volume to 50" Margin="100"></Button>
</Grid>

代码背后

代码语言:javascript
复制
Inherits Page

Private mElement As MediaElement
Private Synth As SpeechSynthesizer
Private currentStream As SpeechSynthesisStream 

Private Async Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    mElement = New MediaElement
    rootgrid.Children.Add(mElement)
End Sub

Async Function SayAsync(ByVal text As String) As Task
    Synth = New SpeechSynthesizer
    currentStream = Await Synth.SynthesizeTextToStreamAsync(text)
    mElement.Volume = 10 / 100
    mElement.PlaybackRate = 50 / 100
    mElement.SetSource(currentStream, String.Empty)

End Function

Private Async Sub btnstart_Click(sender As Object, e As RoutedEventArgs)
    Await SayAsync("The privacy statement was declined." +
       "Go to Settings -> Privacy -> Speech, inking and typing, and ensure you" +
       "have viewed the privacy policy, and 'Get To Know You' is enabled.")
End Sub

Private Sub btnchangevolume_Click(sender As Object, e As RoutedEventArgs)
    mElement.Volume = 50 / 100
End Sub

可能的原因可能是在XAML后面创建代码之后,没有将MediaElement添加到XAML中。如果你仍然有问题,请提供一个最小的复制项目。

顺便说一句,在Windows 10中,构建1607或更高版本,我们建议您使用MediaPlayerElement代替MediaElement

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50044829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档