

現在、C#にて音楽再生アプリを作成しています。  
以下の要件を満たすようなStream（もしくはそれに準じるもの）を探しているのですがいまいち見つけられません。

・単一のStreamの末尾にbyte配列を書き込みながら、同時に先頭から読込できる。

書き込み用スレッドと読み込み用スレッドを作成し、  
書き込み用スレッドでは5秒程度に分割された音楽ファイルをweb上からHttpリクエストで取得し、byte配列として順次Streamに書き込んでいく。  
一方、ストリーミング再生を実現するため、（上記の音楽ファイルのStreamへの書き込みを行う傍ら）、読込用スレッドで先頭からStream上のbyte配列を読込み、再生する。

このような要件を実現したいのですが、いまいちうまくいきません。  
MemoryStreamですとFIFOや排他アクセスが実現できず、  
Queueですとどうしても再生時に切れ目が出来てしまいます。

標準ライブラリでは無いとしても、継承して実装できれば構いません。  
宜しくお願い致します。


CC BY-SA 3.0
2017-02-27T09:20:03.940
32974
2019-07-30T00:01:20.143
20785
question
c# stream audio-streaming
単一StreamへのFIFOな排他アクセスの方法について


[方法: ローカルのプロセス間通信で匿名パイプを使用する](https://msdn.microsoft.com/ja-
jp/library/bb546102\(v=vs.110\).aspx)  
本来はプロセス間通信用ですが、`AnonymousPipeServerStream`へ書き込んで、`AnonymousPipeClientStream`から読み出すというのはどうでしょうか？


CC BY-SA 3.0
2017-02-27T10:07:54.133
32975
2017-02-27T10:07:54.133
4236
32974
answer


サウンドのストリーミング再生は本質的にはXAudio2などの低レベルな再生キューにアクセスできるAPIを使用する必要があります。C#であればSharpDXなどのラッパーを利用することになるかと思います。


CC BY-SA 3.0
2017-02-27T10:18:01.303
32977
2017-02-27T10:18:01.303
5750
32974
answer