こんにちは、ボイスチャットが、なんとか実装できたのですが、
PCMのままで送信をしているせいか、ブチブチと音が切れます。
LAN内でそんな様子なので、何とかして圧縮を行いたいと思いましたが
音声向きのmp3やoggではリアルタイムな圧縮には向かないらしく、
Stacker 圧縮 は文字向きなので、使えないのかもしれません。
なにかボイスチャット向きの圧縮方法はありますか?
それとも根本からおかしいのでしょうか?
ボイスチャット向きの圧縮方法
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボイスチャット向きの圧縮方法
skypeでは映像付きで会話できますからね。なにか問題があるのは確かです。
次の点を確認してみてください。
・PCMのサンプリング周波数は最低限に下げてますか?
・パケットの周期は物理的限界ですか?ロギングしてみてください。
・十分なキャッシュを行っていますか?
あと最新のコードを添付してもらえますか。
次の点を確認してみてください。
・PCMのサンプリング周波数は最低限に下げてますか?
・パケットの周期は物理的限界ですか?ロギングしてみてください。
・十分なキャッシュを行っていますか?
あと最新のコードを添付してもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ボイスチャット向きの圧縮方法
>softyaさん
ご回答ありがとうございます。
・PCMのサンプリング周波数は最低限に下げてますか?
はじめ11.025kHzにしていて、その後8kHz、にしてみましたが、
やはり途切れます。
・パケットの周期は物理的限界ですか?ロギングしてみてください。
タスクマネージャーのネットワークタブにて確認したところ、
ほとんど使われていないようでした(多くとも0.12%程)
よって、データが多すぎるということではないような気がします。
・十分なキャッシュを行っていますか?
キャッシュがどういうものなのかわからないのですが、
FD_READが来るたびに音を鳴らしているだけなので、おそらく
そういったものは実装されていないと思います。
以上より、再生中に受信データがやってきたために、受信していないか、
受信中に再生が止まっている可能性があると思います。
受信スレッドと、再生スレッドを分ければ解決できると思いますが、
どうでしようか?
ご回答ありがとうございます。
・PCMのサンプリング周波数は最低限に下げてますか?
はじめ11.025kHzにしていて、その後8kHz、にしてみましたが、
やはり途切れます。
・パケットの周期は物理的限界ですか?ロギングしてみてください。
タスクマネージャーのネットワークタブにて確認したところ、
ほとんど使われていないようでした(多くとも0.12%程)
よって、データが多すぎるということではないような気がします。
・十分なキャッシュを行っていますか?
キャッシュがどういうものなのかわからないのですが、
FD_READが来るたびに音を鳴らしているだけなので、おそらく
そういったものは実装されていないと思います。
以上より、再生中に受信データがやってきたために、受信していないか、
受信中に再生が止まっている可能性があると思います。
受信スレッドと、再生スレッドを分ければ解決できると思いますが、
どうでしようか?
- 添付ファイル
-
VoiceChat03.txt
- (16 KiB) ダウンロード数: 121 回
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボイスチャット向きの圧縮方法
どの音声通信系のソフトでも少なくとパケットxnのバッファにキャッシュしてから再生していると思います。
最適値は実験で確かめるしか無いですが、遅延を余り感じず途切れれない最適値があるはずですので、最低n=2から始めて見てはどうでしょうか?
画面の2フレームバッファとかと似たような考え方です。
あと再生の制御は別スレッドに分けた方が良いと思いますが、まずキャッシュを試してみてください。
最適値は実験で確かめるしか無いですが、遅延を余り感じず途切れれない最適値があるはずですので、最低n=2から始めて見てはどうでしょうか?
画面の2フレームバッファとかと似たような考え方です。
あと再生の制御は別スレッドに分けた方が良いと思いますが、まずキャッシュを試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボイスチャット向きの圧縮方法
調べてみたのですが、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/
全部を実装する必要は無いと思いますけどね。
http://ja.wikipedia.org/wiki/Real-time_ ... t_Protocol
「Geekなぺーじ : RTP(Realtime Transport Protocol)」
http://www.geekpage.jp/technology/rtp/
全部を実装する必要は無いと思いますけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ボイスチャット向きの圧縮方法
ご回答ありがとうございます。
受信側を、別スレッドにしてみたのですが、問題解決には
なりませんでした、やはりキャッシュを実装する必要がありそうです。
RTPの実装はかなり困難そうなので、まずはキャッシュに挑戦してみよう
と思います。
受信側を、別スレッドにしてみたのですが、問題解決には
なりませんでした、やはりキャッシュを実装する必要がありそうです。
RTPの実装はかなり困難そうなので、まずはキャッシュに挑戦してみよう
と思います。