簡體   English   中英

如何在沒有jmf的情況下在java中構建視頻聊天程序?

[英]how to build a video chat program in java without jmf?

我想使用socket在java中創建一個C / S聊天程序,現在我想為它添加在線視頻聊天功能。 谷歌之后我找到了jmf並且遵循了一些教程,但我並不喜歡它,因為每個客戶端都必須安裝jmf並注冊網絡攝像頭(或其他音頻設備)。

所以我期待一個沒有jmf的替代lib,並找到像(juv,xuggle)這樣的庫,然后效果很好。 不幸的是,他們只能駕駛網絡攝像頭,無法訪問音頻設備。

誰能給我一些建議?

我最近一直在尋找網絡攝像頭選項,我決定使用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

聲音流來自這里的答案:

使用GStreamer在本地網絡上移動音頻

對於Linux,將ksvideosrc更改為v4l2src並將directsoundsink更改為alsasink。 可以在Java中使用gstreamer-java庫在命令行上執行任何操作:

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

這里有一些更有用的鏈接:

GStreamer手冊

備忘單

網絡攝像頭示例

流媒體信息

您還可以使用OpenCV來實現Client Server。 OpenCV提供了許多功能,有助於捕獲視頻。 http://docs.opencv.org/java/2.4.2/org/opencv/highgui/VideoCapture.html#VideoCapture(int)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM