我有一些代码(在 WPF 应用程序中),当一些文本被复制到剪贴板时,它将使用 SpeechSynthesizer 读出文本(我所有的代码都在这篇文章的底部)。
但是,以这种方式播放音频不允许我暂停、倒带或播放等。
所以我想我会使用 SpeechSynthesizer 来保存一个 wav 文件。然后使用 MediaPlayer 类,因为它很容易暂停、播放等。
但是,保存文件后,该文件无法在我的媒体播放器中播放。该文件很好,当我手动运行它时可以完美运行。我想使用 MediaPlayer,因为我已经为它编写了一些代码。
更新
使用此页面上的示例,我可以播放我的 wav 文件。我不知道为什么该文件没有在我的代码中运行?在上面的示例中,我知道他们正在使用媒体元素,并且在我的代码中尝试过它没有任何区别。我不是只播放视频音频,因此我使用 MediaPlayer。
这是我当前的所有代码。文件正在保存,但据我所知,媒体播放器没有播放任何内容,我的计算机上的音量非常高。
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Interop;
using System.IO;
using System.Speech.Synthesis;
using System.Windows.Controls.Primitives;
using System.Windows.Threading;
namespace CSWPFClipboardViewer
{
/// <summary>
/// Main window of the application, also will be used to get clipboard messages.
/// </summary>
public partial class MainWindow : Window
{
#region Private fields
/// <summary>
/// Next clipboard viewer window
/// </summary>
private IntPtr hWndNextViewer;
/// <summary>
/// The <see cref="HwndSource"/> for this window.
/// </summary>
private HwndSource hWndSource;
private bool isViewing;
private MediaPlayer mePlayer = new MediaPlayer();
#endregion
public MainWindow()
{
InitializeComponent();
}
#region Clipboard viewer related methods
private void InitCBViewer()
{
WindowInteropHelper wih = new WindowInteropHelper(this);
hWndSource = HwndSource.FromHwnd(wih.Handle);
hWndSource.AddHook(this.WinProc); // start processing window messages
hWndNextViewer = Win32.SetClipboardViewer(hWndSource.Handle); // set this window as a viewer
isViewing = true;
}
偶然的你
守着一只汪
相关分类