我想將很多音頻從其源格式轉碼爲PCM,而無需重新採樣或調整樣本大小。我想如果Windows Media Player可以播放該文件,並且它不使用傳統的ACM編解碼器,則必須使用DirectSound才能這樣做(這是在Windows XP和Windows Server 2k3上)。那麼是否有可能從C#訪問DirectSound並執行此操作?我試過在網上搜索,但所有的例子都是關於播放的,我沒有興趣去做。是否有可能使用DirectSound在C#中轉碼音頻?
2
A
回答
1
DirectSound是一個音頻播放API,您的意思是DirectShow。 Windows Media Player確實使用DirectShow播放音頻文件。從理論上講,您需要做的只是構建與媒體播放器使用的播放圖形相同的播放圖形,但使用.WAV寫入器過濾器替換音頻驅動程序。
由於DirectShow圖形對象實際上是從C++調用的,但是有一組好的interop定義,您可以在C#中執行此操作,這在C++代碼中更容易實現。
因爲在.NET中對DirectShow進行了嚴重的黑客攻擊,所以有http://directshownet.sourceforge.net/,但這可能是針對您的問題的矯枉過正。
如果您還沒有,我會建議您獲取GraphEdit的副本。您可以使用它以交互方式「直接」顯示直接顯示圖形。將文件放入圖片。然後刪除最後的過濾器並將其替換爲文件寫入器過濾器。
您將遇到的一個問題是,默認的DirectShow過濾器組中沒有.WAV文件寫入器過濾器,您將不得不查找或寫入一個。
如果你只是想轉換文件,並且不太關心如何使用DirectShow編寫代碼,我建議你只需要獲得Sound Forge(甚至可能是演示版本)的副本。它有一種腳本語言(C#,vb),可用於批量處理大多數音頻文件格式。
0
看看CodeProject關於這裏的音頻轉換和here這篇文章。
1
轉換爲WAV可以使用SoX(Sound eXchange,http://sox.sourceforge.net/)從Windows命令行完成。您可以編寫一個批處理文件或一個C#應用程序,該應用程序使用正確的屬性調用SoX。我不確定WinAMP的功能是如何工作的,但它也有內置的文件寫入器輸出選項。您可以將整個播放列表串流成波形文件。
相關問題
- 1. 是否有可能在iOS中使用Codename One錄製音頻?
- 2. 是否有可能使用OpenCV錄製音頻
- 3. 是否有可能在vb.net代碼中使用C++類?
- 4. 是否有可能在C代碼中使用log4cplus?
- 5. 是否有可能在ios中將直播流式音頻轉換爲文本
- 6. 音頻轉碼使用xuggler
- 7. 我應該爲我的音頻項目使用DirectSound還是WASAPI?
- 8. 是否有可能改變音頻文件的播放音高
- 9. 是否有可能在沒有音頻源的情況下使用CamcorderProfile?
- 10. 是否有可能在Android中將音頻合併到視頻中?
- 11. 是否有可能使用html5將MediaStream轉換爲視頻blob
- 12. 是否有可能顯示在Android的音頻meassage
- 13. 是否有可能在C#中生成複雜的音調?
- 14. 在C++中使用音頻
- 15. 音頻轉碼
- 16. iPhone SDK。是否有可能使用AVURLlAsset/AVMutableComposition在AVplayer中旋轉視頻?
- 17. 是否可以在JavaScript中使用瀏覽器訪問音頻?
- 18. 是否有任何音頻/聲音NPAPI插件可用?
- 19. 是否有可能的NSString轉換爲純目標C代碼
- 20. 是否有可能#include在C++類中?
- 21. 是否有可能在c#中「鏈」EventHandlers?
- 22. 是否有可能查看mp4的音頻波形
- 23. 是否有可能與deezer javascript sdk一起使用web音頻api?
- 24. 在iOS上轉碼音頻
- 25. 轉碼音頻和視頻
- 26. 是否有可能使用python編譯c代碼?
- 27. 使用DirectSound設置不同的音頻輸出
- 28. DirectSound程序員的iOS音頻 - 使用什麼?
- 29. C++ - 在EAX中使用DirectSound或XAudio2
- 30. 音頻轉換C#