[英]streaming wav files
我有一個通過套接字發送數據的服務器,數據是一個wav'文件'。 我可以輕松地將數據寫入磁盤,然后在WMP中播放,但我不知道如何在從套接字讀取數據時播放它。 可能嗎?
獎金問題:如果流是mp3或其他格式,我該怎么做?
這適用於本機C ++中的Windows。
因為您已經說過WMP,我假設這個問題適用於嘗試在Windows機器上播放wav文件。 如果沒有,這個答案是不相關的。
你想做的不是微不足道的。 這是一個很好的文章在這里的代碼項目,它描述了Windows音頻模式。 它介紹了如何設置音頻設備以及如何將數據流式傳輸到設備中進行播放。 您“只需”提供來自套接字的數據作為回放緩沖區的數據。 但這就是所有棘手工作的地方。 你必須確定
這是一項有趣的練習。 但是很棘手。
馬克是對的,這是一個棘手的問題。 如果使用DirectSound而不是waveOut,可能不那么棘手。 這是一篇關於從磁盤流式傳輸波形文件的文章 :來自網絡的流媒體基本上是相同的過程。 確保在開始之前從網絡收集足夠的數據 - 您需要的不僅僅是文章提到的2個緩沖區。
增強的Internet功能
文件格式支持 :FMOD目前支持多種音頻文件格式。 部分清單 :
馬克是對的,這是一個棘手的問題。 waveOutXXXX API很古老(它早於Windows 95),並且需要比您想象的更容易出錯的編碼。 與C#相比,您可以更輕松地在C ++中與API進行交互。 只要確保這是你真正想做的事情。
如果您的流是WAV文件數據以外的某種格式(如MP3或WMA),則必須執行將數據解碼為WAV格式並使用waveOutXXXX API播放的附加步驟。 找到一個好的組件進行MP3解碼比你想象的要復雜 - 我認為這與Fraunhofer授權情況有關(如果你以任何方式使用MP3代碼,你應該支付它們)。
除非你想要學習經驗,否則我會找到一個現成的產品來做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.