題:
有沒有辦法讓SoundPlayer正常工作,或者有替代方法嗎?
kmp
2012-10-26 17:53:34 UTC
view on stackexchange narkive permalink

我正在使用 Raspbian“ wheezy”圖片,並複制了一個wav文件並成功播放了該文件:

  aplay test.wav  

然後我打開了這個小的控制台應用程序:

 使用System;使用System.Media;使用System.IO;命名空間SoundPlayingTest {類MainClass {public static void Main (string [] args){using(var file = new FileStream(“ test.wav”,FileMode.Open,FileAccess.Read,FileShare.Read)){var player = new SoundPlayer(file); player.PlaySync(); }}}}  

我希望像 aplay 一樣播放wav,但是它完成了(沒有錯誤)並且我從插入的耳機中聽不到任何聲音

。我發現此線程“ System.Media.SoundPlayer靜音”表明它不起作用,但已修復,並且變通方法表明確實存在我正在這樣做的問題。我真的沒什麼了。

為了提供更多的信息,我運行了:

  mono --version  

結果:

  Mono JIT編譯器版本2.10.8.1(Debian 2.10.8.1-5)版權所有(C)2002-2011 Novell,Inc,Xamarin,Inc和Contributors。 TLS:__threadSIGSEGV:normal通知:epoll體系結構:armel,vfp已禁用:none其他:軟調試LLVM:受支持,未啟用GC:包含的Boehm(帶有鍵入的GC和並行標記) 

那麼,是否有可能使 SoundPlayer 正常工作(它應該正確播放wav文件?),或者我可以使用其他方法來播放在PI上運行的單聲道的聲音文件嗎?

(順便說一句,我通過 sudo apt-get install mono-complete 安裝了mono,因此我想我並沒有丟失任何依賴項)

那是什麼語言?
@Jivings我相信是C#
是的,這是正確的-C Sharp
我剛剛在我的Raspberry Pi上使用Mono JIT編譯器版本3.2.8(Debian 3.2.8 + dfsg-4 + rpi1)和Raspbian版本3.12.22+#691 PREEMPT嘗試了此確切代碼,但它似乎可以正常工作除非您以超級用戶身份運行它,否則它會段錯誤。
二 答案:
Piotr Kula
2012-10-31 21:38:09 UTC
view on stackexchange narkive permalink

Raspberry Pi有很多聲音問題-我在Pi(或實際上是任何Linux)上 mono 也不例外。

存在此問題,並且已在主倉庫中解決。

如何解決此問題?您可以嘗試從最新來源構建單聲道,或者等待一段時間,直到將其推送到下一個更新中。但是似乎“單調”的單聲道不支持音頻,因為...

p /在樹莓派上調用已中斷。尤其是如果涉及浮點值

,因此消息來源建議:

在pi上運行任何非硬浮點操作系統。或在debian實驗版中等待mono 3.0軟件包中的hf支持。幾個星期了,恕我直言。

fiat
2014-05-29 19:30:00 UTC
view on stackexchange narkive permalink

您的示例代碼為我播放,但是,如果我以sudo身份運行控制台應用程序,則SSH會話將掛起,並且需要啟動一個新會話。

如果不是sudo(我需要sudo才能訪問i2c),則不會發生

  pi @ raspberrypi〜$ mono --versionMono Runtime Engine版本3.2.7(主/ d7ce227 12月23日,星期一,美國東部時間21:49:08)版權所有(C)2002-2013 Novell,Inc,Xamarin Inc和貢獻者。 www.mono-project.com TLS:__thread SIGSEGV:常規通知:epoll體系結構:armel,vfp + hard禁用:無其他:softdebug LLVM:受支持,未啟用。 GC:sgen  

我也遇到一些音頻錯誤,但聲音播放

  *** glibc檢測到***單聲道:雙重釋放或損壞(前!):0x01b862a8 ***堆棧跟踪:在<unknown> <0xffffffff>在(包裝託管到本機)Mono.Audio.AlsaDevice.snd_pcm_hw_params_free(IntPtr的)<0xffffffff>在Mono.Audio.AlsaDevice.Dispose(布爾)<0x0004f>在單.Audio.AlsaDevice.Finalize()<0x00027>位於(包裝運行時調用)object.runtime_invoke_virtual_void__this__(object,intptr,intptr,intptr)<0xffffffff> 
process.start aplay的方法有效:http://stackoverflow.com/questions/17288985/how-to-make-mono-beep-or-play-sound-under-64-bit-linux
僅供參考,我們在Mono.Audio.AlsaDevice的單聲道實現中發現了一個問題,該問題沒有使使用snd_pcm_XXX_free調用釋放的指針無效。我們得到了相同的調用堆棧。有關補丁程序(已被接受),請參見https://bugzilla.xamarin.com/show_bug.cgi?id=24109。
太棒了-很棒的工作!
Chrish,此問題已在3.10.x左右解決。但是回來了最新版本4+ :(


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...