古いWindows sndPlaySound()関数の代わりに「モダンな」ものがあります。これは、他の事項に集中しながら、バックグラウンドで.wavファイルを再生する非常に便利な方法でした。私は今、バックグラウンドで.mp3ファイルを再生する必要があり、システムが本質的にサポートする比較的簡単な方法で同じことを達成する方法が不思議です。おそらく、基本的な.mp3再生を遵守するためのCOMコンポーネントがありますか?Windowsのシンプルな.wavまたは.mp3 playbck - どこに行ったのですか?
答えて
"Modern"と言えば、Windows 8 WinRT APIを意味しますか?それとも、「Windows 3.1用に開発されたAPIよりも少し新しいAPI」という意味ですか?オーディオとビデオのAPIの調査では、古典的なWindowsデスクトップアプリケーションの場合here
を見つけることができます
、任意のWAVファイルを再生することができますPlaySoundは、あります。
MP3の場合、私のチームはDirectSoundとWindows Media Format SDKを使用したソリューションを発明しました。後者は、WMAとMP3ファイルをデコードできます。オーディオストリームをDSoundバッファに直接送りました。これは、かすかな心のためではありません。
より高いレベルの代替品であるWindows Media Player APIを使用する可能性があります。
DirectShowは非常に遺憾な選択肢ですが、何かを手に入れて作業するのは簡単です。 Media FoundationはDirectShowの代わりです。
PlaySoundは古代ではあるが十分な解決策であり、特に洗練されたものを実装する時間を正当化することができない場合には適している。私はiOS AVAudioPlayerに相当するものを期待していました。ここでは、約5行のコードでこれを達成できます。これはWin32です。一口... –
このような多くの問題に対する簡単な答えは、単にsystem( "play.exe soundfile.mp3")または同等のコマンドラインプログラムを呼び出すことです。コマンドラインを広範な機能を持ち、標準のポータブルで柔軟性があり、デバッグしやすく、変更しやすいAPIである別のAPIとして扱いましょう。ライブラリ関数を呼び出すのと同じくらい効率的ではないかもしれませんが、特に呼び出されているプログラムがすでにディスクキャッシュに入っている場合は問題になりません。ちなみに、ソフトウェアの複雑さは、それが「近代的」なので避けてください。それはしばしば建築の宇宙飛行士とプログラミングの習慣が悪いという証拠です。
オーディオとメディアに関連するAPIがいくつかあり、目標を達成するにはいくつかの方法があります。
第三者のライブラリがないこと、最高のOSバージョンのカバレッジ、機能セット、そしてシンプルさという点で、DirectShow APIが最適です。 WinRTを除く現在のバージョンと以前のバージョンのVisual Studioが対象とするWindowsのすべてのバージョンでサポートされています。
以下のコードスニペットは、MP3およびWMAファイルを再生します。それはC++
ですが、すべてのCOMなので、言語間で移植性があります。あなたがあなた自身のファイルを再生している場合
#include "stdafx.h"
#include <dshow.h>
#include <dshowasf.h>
#include <atlcom.h>
#pragma comment(lib, "strmiids.lib")
#define V(x) ATLVERIFY(SUCCEEDED(x))
int _tmain(int argc, _TCHAR* argv[])
{
static LPCTSTR g_pszPath = _T("F:\\Music\\Cher - Walking In Memphis.mp3");
V(CoInitialize(NULL));
{
CComPtr<IGraphBuilder> pGraphBuilder;
V(pGraphBuilder.CoCreateInstance(CLSID_FilterGraph));
CComPtr<IBaseFilter> pBaseFilter;
V(pBaseFilter.CoCreateInstance(CLSID_WMAsfReader));
CComQIPtr<IFileSourceFilter> pFileSourceFilter = pBaseFilter;
ATLASSERT(pFileSourceFilter);
V(pFileSourceFilter->Load(CT2COLE(g_pszPath), NULL));
V(pGraphBuilder->AddFilter(pBaseFilter, NULL));
CComPtr<IEnumPins> pEnumPins;
V(pBaseFilter->EnumPins(&pEnumPins));
CComPtr<IPin> pPin;
ATLVERIFY(pEnumPins->Next(1, &pPin, NULL) == S_OK);
V(pGraphBuilder->Render(pPin));
CComQIPtr<IMediaControl> pMediaControl = pGraphBuilder;
CComQIPtr<IMediaEvent> pMediaEvent = pGraphBuilder;
ATLASSERT(pMediaControl && pMediaEvent);
V(pMediaControl->Run());
LONG nEventCode = 0;
V(pMediaEvent->WaitForCompletion(INFINITE, &nEventCode));
}
CoUninitialize();
return 0;
}
あなたがthe code might be twice as short、大ID3タグのセクションが含まれていないのは確実です。
- 1. 最小のオーディオファイル:MP3、Ogg、またはWav?
- 2. Windows上で.wavまたは.mp3ファイルを再生して一時停止する
- 3. soundtouchのためのmp3へのWAV
- 4. は、HTMLのbackgroungでMP3 \ WAVを持っています
- 5. FMODのMIDIまたはWAV/MP3ファイルのテンポを変更する
- 6. バックグラウンドでmp3またはwav音楽ファイルを再生する
- 7. シンプルなMP3プレーヤー
- 8. C# - インポートされたMP3またはWAVファイルからのスネアドラムサウンド検出。可能?
- 9. VB2010 Windowsフォームの先頭に.wav/.mp3ファイルを再生しますか?
- 10. .mp3ファイルをiOSのコードの.wavまたは.cafに変換する
- 11. MP3/wavオーディオファイルの長さ
- 12. ビューページにシンプルな.wavを再生しますか?アンドロイドで
- 13. mp3をJavaのwavに変換する
- 14. Apache Archivaはなぜどこにも行かなかったのですか?
- 15. mp3をwavにプログラムでデコードする簡単な方法は?
- 16. WavからMP3への変換
- 17. javafxは私の.wavまたは.mp3ファイルを見つけることができません
- 18. Webサーバー上でのWAV/MP3変換
- 19. NUnit Gui Runnerはどこに行ったのですか?バージョン3.0.1
- 20. Lucene.Net.Highlightはどこに行ったのですか?
- 21. オーディオ(.mp3/.wavなど)データをAnkiデッキに一括インポートするにはどうすればよいですか?
- 22. .midファイルをアンドロイドの.wavまたは.mp3ファイル形式のオーディオ形式に変換しますか?
- 23. wavをmp3に符号化するアルゴリズム
- 24. .wavファイルを.mp3に変換する
- 25. WAVをMP3に変換する
- 26. Firefoxのスタイルタブ - どこに行ったのですか?
- 27. byearの録音したマイクをwavまたはmp3形式でエクスポートする方法
- 28. PHP - .wavファイルを.mp3に変換しますか?
- 29. Monogame Content Manager - WAV/MP3 Importerひどい最終的な品質
- 30. node.jsでmp3ファイルをwavファイルに変更するには
[こちらの提案のいくつか](http://stackoverflow.com/questions/8121570/use-windows-built-in-mp3-decoder-to-play-audio) – arx