Java で記述された VoIP ソフトフォンを作成しています。現在、G.711 コーデックが実装されています (すべて Java 経由で、ネイティブ コードはありません)。
利用可能なコーデックを拡張したいのですが、Jitsi のようなプロジェクトなど、どこを見ても、Java でアルゴリズムを記述する代わりに、C で記述されており、JNI を使用して呼び出しています。私は C についてほとんど知識がなく、JNI についても何も知らないので、それらを学ばなければならないことをあまり心配していません。さらに、ネイティブ コードに依存しない純粋な Java 実装のアイデアも気に入っています。
私の質問は次のとおりです。Java 実装を見つけることができなかったのには十分な理由があると確信していますが、その理由を知るにはコーデックについて十分に知りません。では、G.711 のような別のコーデックがうまく機能するのに、なぜ G.722 の Java 実装がないのでしょうか?
さらに、ネイティブ コードが唯一の方法である場合、どこから始めるのが適切でしょうか? G.722.c コードを ITU-T から Java に変換しようとしましたが、少し頭が痛くなってやめました (これも G.711 変換が機能していたためです)。私は Xuggle を調べましたが、プロジェクトのビルドは悪夢であり、GPL バージョンは使用できません (便利な Javadoc もありません)。
FFMpeg は、それが提供するすべてのコーデックで有望に見えますが、独自の JNI ラッパーを作成するかどうかはわかりません。私が調べたものは、実装が難しい (Xuggle) か、時代遅れに見える (FMJ) ようです。 .
結論: 新しいコーデックを実装したいのですが、どのコーデックを選択して使用したいのですか? オーディオ コーデックが 2 つまたは 3 つだけ必要な場合は、AV ライブラリ全体は必要ありません。フットプリントが小さく、できる限り純粋な Java です。