none
除了Windows Media Player以外我还有其它选择么? RRS feed

  • 问题

  • 想在一个C#程序中播放一首曲子同时用一个Label同步显示歌词。

    我试验了Windows Media Player ActiveX控件,但是这个控件竟然需要让我使用一个Timer来记录播放的时间。
    而且我发现不管是使用Timer控件,还是System.Timers.Timer,也不论Timer的间隔设置得多低,歌词仍然会有miss的状况出现(就是该显示的时候没有显示)

    所以想请教,这种情况该怎么办才能达到我想要的结果?
    Xlfdll
    2009年7月30日 4:24

答案

  • Windows Media Player  类库并没有关于播放进度变更的事件  必须自己实现timer 来得到position属性
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年8月4日 5:21
    版主

全部回复

  • 歌词仍然会有miss的状况出现

      是因为你的判断有问题吧  不能要求时间相等则显示    时间之间相差 0.5秒内显示就可以了


    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    • 已标记为答案 Xlfdll 2009年7月30日 11:10
    • 取消答案标记 Xlfdll 2009年7月30日 11:12
    2009年7月30日 7:11
    版主
  • 原来如此,判定时间不要太精确,是这样吧?

    另外,除了判定,为了达到我说的目标,最佳的做法是什么?我用的Timer外加Tick事件处理是不是正确的?
    Xlfdll
    2009年7月30日 11:14
  • 你好,

    或者自己使用DirextSound去播放和显示歌词,参考下这个例子:
    http://69.10.233.10/KB/audio-video/Circular_Buffers.aspx
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2009年8月3日 8:14
    版主
  • 原来如此,判定时间不要太精确,是这样吧?

    另外,除了判定,为了达到我说的目标,最佳的做法是什么?我用的Timer外加Tick事件处理是不是正确的?
    Xlfdll

    比较好的做法是 用 thread.timer    您可以每次循环作时间修正
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年8月4日 3:05
    版主
  • 在播放的各种事件里处理
    【孟子E章】
    2009年8月4日 5:15
    版主
  • Windows Media Player  类库并没有关于播放进度变更的事件  必须自己实现timer 来得到position属性
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年8月4日 5:21
    版主
  • Thread.Timer刚开始因为感觉它比Timers.Timer复杂,所以我一开始没有用……
    我也是很难理解……为什么WMP没有时间更改的事件……
    从一开始就没有考虑到有这种需要时间值的需求么?
    或者说我不知道WMP事件的正确用法?

    先去试试看,虽然只是一个很无聊的程序但真是很费我的脑筋……哈哈
    Xlfdll
    2009年8月4日 13:43