ページ 1 / 1
ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 09:54
by shiro4ao
こんにちは、ボイスチャットが、なんとか実装できたのですが、
PCMのままで送信をしているせいか、ブチブチと音が切れます。
LAN内でそんな様子なので、何とかして圧縮を行いたいと思いましたが
音声向きのmp3やoggではリアルタイムな圧縮には向かないらしく、
Stacker 圧縮 は文字向きなので、使えないのかもしれません。
なにかボイスチャット向きの圧縮方法はありますか?
それとも根本からおかしいのでしょうか?
Re: ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 11:10
by softya(ソフト屋)
skypeでは映像付きで会話できますからね。なにか問題があるのは確かです。
次の点を確認してみてください。
・PCMのサンプリング周波数は最低限に下げてますか?
・パケットの周期は物理的限界ですか?ロギングしてみてください。
・十分なキャッシュを行っていますか?
あと最新のコードを添付してもらえますか。
Re: ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 12:13
by shiro4ao
>softyaさん
ご回答ありがとうございます。
・PCMのサンプリング周波数は最低限に下げてますか?
はじめ11.025kHzにしていて、その後8kHz、にしてみましたが、
やはり途切れます。
・パケットの周期は物理的限界ですか?ロギングしてみてください。
タスクマネージャーのネットワークタブにて確認したところ、
ほとんど使われていないようでした(多くとも0.12%程)
よって、データが多すぎるということではないような気がします。
・十分なキャッシュを行っていますか?
キャッシュがどういうものなのかわからないのですが、
FD_READが来るたびに音を鳴らしているだけなので、おそらく
そういったものは実装されていないと思います。
以上より、再生中に受信データがやってきたために、受信していないか、
受信中に再生が止まっている可能性があると思います。
受信スレッドと、再生スレッドを分ければ解決できると思いますが、
どうでしようか?
Re: ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 13:13
by softya(ソフト屋)
どの音声通信系のソフトでも少なくとパケットxnのバッファにキャッシュしてから再生していると思います。
最適値は実験で確かめるしか無いですが、遅延を余り感じず途切れれない最適値があるはずですので、最低n=2から始めて見てはどうでしょうか?
画面の2フレームバッファとかと似たような考え方です。
あと再生の制御は別スレッドに分けた方が良いと思いますが、まずキャッシュを試してみてください。
Re: ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 13:47
by softya(ソフト屋)
調べてみたのですが、RTP(Real-time Transport Protocol)と言う規格を参考にされると良いかと思います。
http://ja.wikipedia.org/wiki/Real-time_ ... t_Protocol
「Geekなぺーじ : RTP(Realtime Transport Protocol)」
http://www.geekpage.jp/technology/rtp/
全部を実装する必要は無いと思いますけどね。
Re: ボイスチャット向きの圧縮方法
Posted: 2010年12月30日(木) 13:55
by shiro4ao
ご回答ありがとうございます。
受信側を、別スレッドにしてみたのですが、問題解決には
なりませんでした、やはりキャッシュを実装する必要がありそうです。
RTPの実装はかなり困難そうなので、まずはキャッシュに挑戦してみよう
と思います。