公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm開發(fā)遇到播放聲音的問題,最終采用NAudio實現(xiàn)

admin
2021年2月1日 10:1 本文熱度 4178

做一個項目,需要播放聲音,于是找了幾種方法。

首先用的是Soundplayer,它在.NET 自帶的類庫 System.Media 下。

Soundplayer這家伙有一個特點就是只能播放一個音頻文件,不論你new出多少個Soundplayer,它總是播放最后一個音頻。只要其中任何一個Soundplayer被停止,馬上就沒聲音了!

后來就換DirectSound,它需要下載并安裝Micrisoft DirectX SDK。

這家伙雖然可以多個音頻同時播放,但是,它有一個怪癖,就是只要窗口沒有被聚焦,它就Shut up了。

后來又試了AxWindowsMediaPlayer,這個玩意呢它好像只能指定音頻路徑,但是,我想要直接調(diào)用資源文件里面的音頻,所以,我拋棄它!

最后,無意中搜到NAudio,于是就開始研究它!

這玩意也是有點毛病,竟然沒有循環(huán)播放的方法,網(wǎng)上找了老半天也沒有人做過這個,倒是不少人抄那篇“用C#和NAudio解碼庫播放mp3示例”。

只能自己研究了,最終的MyPlayer代碼:


  1. using System.IO;
  2. using NAudio.Wave;
  3. partial class MyPlayer {
  4. WaveOut player;
  5. WaveFileReader reader;
  6. WaveStream pcmStream;
  7. BlockAlignReductionStream blockAlignedStream;
  8. public Stream Stream {
  9. set {
  10. if(reader != null)
  11. reader.Dispose();
  12. if(pcmStream != null)
  13. pcmStream.Dispose();
  14. if(blockAlignedStream != null)
  15. blockAlignedStream.Dispose();
  16. reader = new WaveFileReader(value);
  17. pcmStream = WaveFormatConversionStream.CreatePcmStream(reader);
  18. blockAlignedStream = new BlockAlignReductionStream(pcmStream);
  19. if(player != null)
  20. player.Dispose();
  21. player = new WaveOut(WaveCallbackInfo.FunctionCallback());
  22. player.PlaybackStopped += new System.EventHandler<StoppedEventArgs>(player_PlaybackStopped);
  23. }
  24. }
  25. public MyPlayer(Stream media) {
  26. Stream = media;
  27. }
  28. public MyPlayer() { }
  29. public int Looping { get; set; }
  30. int timer;
  31. public void Play() {
  32. timer = 0;
  33. if(player != null && player.PlaybackState == PlaybackState.Playing)
  34. return;
  35. if(blockAlignedStream != null) {
  36. blockAlignedStream.Position = 0;
  37. player.Init(blockAlignedStream);
  38. player.Play();
  39. }
  40. }
  41. void player_PlaybackStopped(object sender, StoppedEventArgs e) {
  42. if(timer >= 0 && (Looping == 0 || Looping < timer)) {
  43. blockAlignedStream.Position = 0;
  44. player.Init(blockAlignedStream);
  45. player.Play();
  46. }
  47. timer++;
  48. }
  49. public void Stop() {
  50. timer = int.MinValue;
  51. if(player != null) {
  52. player.Stop();
  53. }
  54. }
  55. public void Dispose() {
  56. if(reader != null)
  57. reader.Dispose();
  58. if(pcmStream != null)
  59. pcmStream.Dispose();
  60. if(blockAlignedStream != null)
  61. blockAlignedStream.Dispose();
  62. if(player != null) {
  63. player.Stop();
  64. player.Dispose();
  65. }
  66. }
  67. }


該文章在 2021/2/1 10:01:40 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国内精品美女a在线播放 | 成人免费观看国产高清 | 国产中文字幕乱人伦在线 | 91网址在线播放 | 成人动漫视频在线观看 | 高潮抽搐痉挛一区二区精品视频 | 国产精品白浆精子流水合集 | 国产a级毛片久久久久 | 丰满人妻熟妇av无码区a | 国产精品美女久久久 | 国产微拍一区 | 国产精品无码av片在线观看播放 | 国产成人无码aa精品一区91 | 国产美女被遭强高潮免费 | 国产成人久久精品二区三区牛 | 国产高清无码不卡二区三区 | 成人欧美一区在线视频在线观看 | 高清无码在线观看越南专区 | 国产麻豆操 | 91麻豆国产高清 | 国产av无码专区亚洲av毛片费 | 国产偷窥真人视频在线观看 | 成年人樱桃app下载安装 | av在线免费观看 | 成人免费无码大片a毛片抽搐色欲 | 精品无码三级在线观 | 国产福利在线观看视频 | 国产亚洲成人精品久久久久无码av | 国产精品成人一区二区三区视频 | 18禁美女黄网站色大片免费看下 | 18禁黄无码免费网站高潮 | 国产麻豆精 | 国产作爱视频免费 | 国产日韩一区二区不卡视频 | 成人黄色毛片一级 | 国产一级片内射在线视频播放 | 精品无码av人妻系列网站 | 国产精品穿着丝袜打电话播放 | 国产欧美另类久久久精品丝瓜 | 国产亚洲国产真人av | 国产v在线在线 |