4

ソケット経由でデータを送信するサーバーがあります。データは wav 'ファイル' です。データをディスクに書き込んで WMP で再生することは簡単にできますが、ソケットから読み取ったときにどのように再生できるかわかりません。出来ますか?

おまけの質問: ストリームが mp3 またはその他の形式の場合、どうすればよいですか?

これは、ネイティブ C++ のウィンドウ用です。

4

3 に答える 3

3

あなたがWMPと言ったので、私は質問がWindowsマシンでwavファイルを再生しようとすることに当てはまると思います。そうでない場合、この回答は関係ありません。

あなたがしたいことは些細なことではありません。Windowsオーディオモデルを説明するコードプロジェクトに関する良い記事がここにあります。オーディオデバイスをセットアップする方法と、再生のためにデータをデバイスにストリーミングする方法について説明します。「単に」、ソケットから入ってくるデータを再生バッファのデータとして提供する必要があります。しかし、そこにすべてのトリッキーな作業があります。あなたはそれを確認する必要があります

  • 再生を開始するのに十分なデータがあります
  • ソケットがデータに飢えていて、再生バッファーに送信するものがない場合に対処します
  • 再生バッファをいっぱいに保つのに十分な速度でソケットからデータを読み取ることができます

面白い運動です。しかし、注意が必要です。

于 2008-09-24T22:38:36.620 に答える
1

これがトリッキーな問題であることについて、マークは正しい。waveOut の代わりに DirectSound を使用すると、それほど難しくありません。 ディスクからのウェーブ ファイルのストリーミングに関する記事を次に示します。ネットワークからのストリーミングは、基本的に同じプロセスです。開始する前に、ネットワークから十分なデータを収集してください。記事で言及されている 2 つ以上のバッファーが必要になります。

さらにトリッキーでないのはFMODです。よくある質問から:

強化されたインターネット機能

  • インターネット オーディオ ストリーミング。カスタムのインターネット ストリーミング コードが含まれており、シームレスな SHOUTcast、Icecast、http ストリーミングのサポートが可能です。
  • ダウンロード機能。ネットワーク ファイルをサポートする FMOD のモジュラー ファイル システムの副作用として、静的サンプルでさえインターネットからロードできます。

ファイル形式のサポート: FMOD は現在、幅広いオーディオ ファイル形式をサポートしています。 部分的なリスト:

  • MP3 - (MPEG I/II レイヤー 3、VBR サポートを含む)
  • OGG - (Ogg Vorbis 形式)
  • WAV - (圧縮された wav を含む Microsoft Wave ファイル。PCM、MP3、および IMA ADPCM 圧縮された wav
于 2008-09-25T05:15:12.067 に答える
0

これがトリッキーな問題であることについて、マークは正しい。waveOutXXXX API は古く (Windows 95 より前)、思ったよりもエラーが発生しやすいコーディングが必要です。C# よりも C++ で API を操作する方が簡単です。これが本当にやりたいことであることを確認してください。

ストリームが WAV ファイル データ以外の形式 (MP3 や WMA など) の場合は、データを WAV 形式にデコードし、waveOutXXXX API で再生する追加の手順を実行する必要があります。MP3 デコードを行うための優れたコンポーネントを見つけるのは、予想以上に難しい作業です。これは Fraunhofer ライセンスの状況に関連していると思います (MP3 コードを何らかの方法で使用する場合は、フラウンホーファーに料金を支払う必要があります)。

学習経験が必要でない限り、これを行うための既製の製品を見つけるでしょう.

于 2008-09-25T00:29:51.160 に答える