หลังจากที่มีการนำเสนอการส่งเสียงโดยใช้ JMF ผ่าน RTP แล้ว คราวนี้ก็มาถึงในส่วนของฝั่งรู้รับบ้าง เราสามารถเขียนโปรแกรมได้ดังนี้ครับ
|
import javax.swing.*; public class Receive extends JFrame implements private Player player; public Receive(int destPort) { RTPManager rtpMgr = RTPManager.newInstance(); try { public void update(ReceiveStreamEvent evt) { public void controllerUpdate(ControllerEvent evt) { Container c = getContentPane(); if (vc != null ) c.add(vc,"North"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public static void main(String[] args) { } |
มีการทำงานดังนี้
- สร้าง RTPManager ไว้รอรับ audio stream ที่ส่งมาจาก Transmit เราสามารถดักจับเหตุการณ์เมื่อมี audio stream ส่งมาโดยการ addReceiveStreamListener
- สร้าง SessionAddress ไว้สำหรับเป็น socket รอรับ audioStream โดยให้ RTPManager สั่ง Initialize และ addTarget ไว้
- เมื่อมี Stream เข้ามาหลังจากที่เรา Listen รอไว้ update(ReceiveStreamEvent evt) จะถูกเรียกขึ้นมาทำงาน เราก็อ่าน stream จาก network โดยใช้ evt.getReceiveStream(); แล้วนำ stream นั้นมาสร้างเป็น DataSource
- นำ DataSource ทีได้มาสร้างเป็น Player แล้วก็ addControllerListener และ start
- เมื่อ Player พร้อมจะทำงาน (RealizeCompleteEvent) เราก็สร้าง Player โดยการ get GUI Component ต่าง ๆ ของมัน และสั่งให้มันได้เลย
- ในฟังก์ชัน main เราจะให้รอรับ stream ที่ส่งมาเป็นเวลา 30 วินาที ถ้าไม่มีอะไรส่งมาก็จะจบโปรแกรม