2012-04-21 2 views
3

소켓을 사용하여 Java에서 C/S 채팅 프로그램을 만들고 싶습니다. 이제 온라인 비디오 채팅 기능을 추가하고 싶습니다. Google 후에 jmf를 발견하고 자습서를 따랐지만 모든 클라이언트가 jmf를 설치하고 웹캠 (또는 다른 오디오 장치)을 등록해야하기 때문에 정말 좋아하지 않습니다.jmf없이 자바 비디오 채팅 프로그램을 만드는 방법?

그래서 jmf가없는 대체 lib 디렉토리를 찾고 (juv, xuggle)와 같은 libs를 찾은 다음 잘 작동합니다. 불행히도, 그들은 웹캠 만 운전할 수 있고 오디오 장치에 액세스 할 수 없습니다.

아무도 나에게 조언을 해줄 수 있습니까?

답변

4

저는 최근에 웹캠 옵션을보고 있었고 GStreamer를 사용하여 정착했습니다. 별도의 네이티브 라이브러리가 필요하지만이를 프로그램과 함께 번들로 제공 할 수 있습니다 (라이센스 확인).

좋은 소식은 비디오 및 오디오 스트리밍이 내장되어 있다는 것입니다. 나쁜 소식은 믿을 수 없을 정도로 융통성이 있기 때문에 머리를 숙이려면 약간의 시간이 필요하다는 것입니다. 다음은 Windows에서 명령 줄에서 스트림을 설정하는 예제입니다.

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 

는 사운드 스트림은 여기에 대한 대답에서 적응 : v4l2src 및 alsasink하는 directsoundsink하는

moving audio over a local network using GStreamer

Linux의 변경 ksvideosrc을.

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

그리고 여기에 좀 더 유용한 링크 :

GStreamer Manual

Cheat Sheet

Webcam Examples 명령 행에서 가능한 건은 gstreamer를-자바 라이브러리를 사용하여 자바 내에서 가능하다

Streaming Info

+0

대단합니다! GStreamer와 Java 인터페이스의 기본 사용법을 배운 후에는 자유롭게 웹캠에 액세스 할 수 있습니다! :) 추신 : 모든 클라이언트가 GStream을 설치해야하므로 GStream을 설치하지 않는 다른 컴퓨터에서 내 프로그램을 실행하는 더 좋은 방법이 있습니까? –

+0

나는 그것이 가능하다고 생각한다. 그러나 그것은 추한 사람이다. 그리고 나는 허가 또는 그것이 현명한 지에 관해 확실하지 않다. Windows에서 GStreamer는 PATH 및 GST_PLUGIN_PATH 환경 변수를 사용하여 DLL을로드합니다. 응용 프로그램을 실행하기 전에 응용 프로그램의 폴더에있는 디렉토리를 가리 키기 위해 이러한 변수 (프로세스에만 해당)를 수정하면 GStreamer를 설치할 필요가 없습니다. 내가 이전에 말했듯이 - 나는 그것을 권장하지 않거나 그것이 합법적인지를 안다! –

+0

Ahha, 나는 단지 그것을 배우기 위해 사용한다 :) –

관련 문제