2012-04-21 13 views
3

ソケットでjavaでC/Sチャットプログラムを作成したいのですが、今はオンラインビデオチャット機能を追加したいと思います。私はjmfを見つけてチュートリアルをたどりましたが、すべてのクライアントがjmfをインストールしてwebcam(または他のオーディオデバイス)を登録する必要があるため、本当に気に入らないのです。jmfなしでJavaでビデオチャットプログラムを構築する方法は?

私はjmfのない別のlibを楽しみにしていて、(juv、xuggle)のようなlibsを見つけて、うまくいきました。残念ながら、彼らはウェブカメラを駆動することができ、オーディオデバイスにアクセスすることはできません。

誰かから助言をいただけますか?

答えて

4

私は最近、ウェブカメラオプションを検討しており、GStreamerを使用して解決しました。別のネイティブライブラリが必要ですが、これらをあなたのプログラムとバンドルすることができます(ライセンスを確認してください)。

良いニュースは、ビデオとオーディオのストリーミングを内蔵していることです。悪いニュースは、信じられないほど柔軟性があるので、あなたの頭を抱くのに少し時間がかかることです。次に、Windowsのコマンドラインからストリームを設定する例を示します。 alsasinkするv4l2srcとdirectsoundsinkするLinuxの変更ksvideosrcについては

moving audio over a local network using GStreamer

Send video: 
gst-launch ksvideosrc ! queue ! video/x-raw-yuv,width=320,height=240,framerate=4/1 ! videorate ! videoscale ! ffmpegcolorspace ! queue ! smokeenc ! queue ! udpsink host=[TARGET_IP_ADDRESS] port=5000 

Receive video: 
gst-launch udpsrc port=5000 ! smokedec ! autovideosink 

Send audio: 
gst-launch audiotestsrc ! audioconvert ! audio/x-raw-int,channels=1,depth=16,width=16,rate=44100 ! rtpL16pay ! udpsink host=[TARGET_IP_ADDRESS] port=5001 

Receive audio: 
gst-launch udpsrc port=5001 ! "application/x-rtp,media=(string)audio, clock-rate=(int)44100, width=16, height=16, encoding-name=(string)L16, encoding-params=(string)1, channels=(int)1, channel-positions=(int)1, payload=(int)96" ! rtpL16depay ! audioconvert ! audioresample ! directsoundsink 

サウンドストリームは、ここでの回答から適応されています。

http://code.google.com/p/gstreamer-java/

そして、ここにあるいくつかのより多くの有用なリンク:

GStreamer Manual

Cheat Sheet

Webcam Examples、コマンドライン上で可能なものはすべてのgstreamer-Javaライブラリを使用してJava内から可能です

Streaming Info

+0

素晴らしいです! GStreamerとそのJavaインターフェイスの基本的な使い方を学んだら、私は自由にWebカメラにアクセスできます。 :) PS:すべてのクライアントはGStreamをインストールしなければならないので、GStreamをインストールしない別のマシンでプログラムを実行するより良い方法はありますか? –

+0

私はそれは可能だと思うけど、それは少し醜いですし、私は免許や賢明であるかどうかは分かりません。 Windowsでは、GStreamerはPATHおよびGST_PLUGIN_PATH環境変数を使用してDLLをロードします。アプリケーションのフォルダ内のディレクトリを指すようにアプリケーションを起動する前に、それらの変数を(あなたのプロセスのためだけに)変更すると、GStreamerをインストールする必要はありません。私が以前に言ったように - 私はそれを推奨しないか、それが合法であるかどうかを知りません! –

+0

Ahha、私はちょうど学習のためにそれを使用します:) –

関連する問題