ボイスチャット向きの圧縮方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
shiro4ao
記事: 224
登録日時: 14年前
住所: 広島

ボイスチャット向きの圧縮方法

#1

投稿記事 by shiro4ao » 14年前

こんにちは、ボイスチャットが、なんとか実装できたのですが、
PCMのままで送信をしているせいか、ブチブチと音が切れます。

LAN内でそんな様子なので、何とかして圧縮を行いたいと思いましたが
音声向きのmp3やoggではリアルタイムな圧縮には向かないらしく、
Stacker 圧縮 は文字向きなので、使えないのかもしれません。

なにかボイスチャット向きの圧縮方法はありますか?
それとも根本からおかしいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボイスチャット向きの圧縮方法

#2

投稿記事 by softya(ソフト屋) » 14年前

skypeでは映像付きで会話できますからね。なにか問題があるのは確かです。
次の点を確認してみてください。
・PCMのサンプリング周波数は最低限に下げてますか?
・パケットの周期は物理的限界ですか?ロギングしてみてください。
・十分なキャッシュを行っていますか?

あと最新のコードを添付してもらえますか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
shiro4ao
記事: 224
登録日時: 14年前
住所: 広島

Re: ボイスチャット向きの圧縮方法

#3

投稿記事 by shiro4ao » 14年前

>softyaさん
ご回答ありがとうございます。

・PCMのサンプリング周波数は最低限に下げてますか?
 はじめ11.025kHzにしていて、その後8kHz、にしてみましたが、
 やはり途切れます。

・パケットの周期は物理的限界ですか?ロギングしてみてください。
 タスクマネージャーのネットワークタブにて確認したところ、
 ほとんど使われていないようでした(多くとも0.12%程)
 よって、データが多すぎるということではないような気がします。

・十分なキャッシュを行っていますか?
 キャッシュがどういうものなのかわからないのですが、
 FD_READが来るたびに音を鳴らしているだけなので、おそらく
 そういったものは実装されていないと思います。


以上より、再生中に受信データがやってきたために、受信していないか、
受信中に再生が止まっている可能性があると思います。

受信スレッドと、再生スレッドを分ければ解決できると思いますが、
どうでしようか?
添付ファイル
VoiceChat03.txt
(16 KiB) ダウンロード数: 121 回

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボイスチャット向きの圧縮方法

#4

投稿記事 by softya(ソフト屋) » 14年前

どの音声通信系のソフトでも少なくとパケットxnのバッファにキャッシュしてから再生していると思います。
最適値は実験で確かめるしか無いですが、遅延を余り感じず途切れれない最適値があるはずですので、最低n=2から始めて見てはどうでしょうか?
画面の2フレームバッファとかと似たような考え方です。

あと再生の制御は別スレッドに分けた方が良いと思いますが、まずキャッシュを試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ボイスチャット向きの圧縮方法

#5

投稿記事 by softya(ソフト屋) » 14年前

調べてみたのですが、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/

全部を実装する必要は無いと思いますけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
shiro4ao
記事: 224
登録日時: 14年前
住所: 広島

Re: ボイスチャット向きの圧縮方法

#6

投稿記事 by shiro4ao » 14年前

ご回答ありがとうございます。

受信側を、別スレッドにしてみたのですが、問題解決には
なりませんでした、やはりキャッシュを実装する必要がありそうです。

RTPの実装はかなり困難そうなので、まずはキャッシュに挑戦してみよう
と思います。

閉鎖

“C言語何でも質問掲示板” へ戻る