ソケット経由でデータを送信するサーバーがあります。データは wav 'ファイル' です。データをディスクに書き込んで WMP で再生することは簡単にできますが、ソケットから読み取ったときにどのように再生できるかわかりません。出来ますか?
おまけの質問: ストリームが mp3 またはその他の形式の場合、どうすればよいですか?
これは、ネイティブ C++ のウィンドウ用です。
あなたがWMPと言ったので、私は質問がWindowsマシンでwavファイルを再生しようとすることに当てはまると思います。そうでない場合、この回答は関係ありません。
あなたがしたいことは些細なことではありません。Windowsオーディオモデルを説明するコードプロジェクトに関する良い記事がここにあります。オーディオデバイスをセットアップする方法と、再生のためにデータをデバイスにストリーミングする方法について説明します。「単に」、ソケットから入ってくるデータを再生バッファのデータとして提供する必要があります。しかし、そこにすべてのトリッキーな作業があります。あなたはそれを確認する必要があります
面白い運動です。しかし、注意が必要です。
これがトリッキーな問題であることについて、マークは正しい。waveOut の代わりに DirectSound を使用すると、それほど難しくありません。 ディスクからのウェーブ ファイルのストリーミングに関する記事を次に示します。ネットワークからのストリーミングは、基本的に同じプロセスです。開始する前に、ネットワークから十分なデータを収集してください。記事で言及されている 2 つ以上のバッファーが必要になります。
強化されたインターネット機能
ファイル形式のサポート: FMOD は現在、幅広いオーディオ ファイル形式をサポートしています。 部分的なリスト:
これがトリッキーな問題であることについて、マークは正しい。waveOutXXXX API は古く (Windows 95 より前)、思ったよりもエラーが発生しやすいコーディングが必要です。C# よりも C++ で API を操作する方が簡単です。これが本当にやりたいことであることを確認してください。
ストリームが WAV ファイル データ以外の形式 (MP3 や WMA など) の場合は、データを WAV 形式にデコードし、waveOutXXXX API で再生する追加の手順を実行する必要があります。MP3 デコードを行うための優れたコンポーネントを見つけるのは、予想以上に難しい作業です。これは Fraunhofer ライセンスの状況に関連していると思います (MP3 コードを何らかの方法で使用する場合は、フラウンホーファーに料金を支払う必要があります)。
学習経験が必要でない限り、これを行うための既製の製品を見つけるでしょう.