Class Project : FOBI Application For Video Conference

Class Project : FOBI Application For Video Conference

Objective

โปรเจคนี้มีวัตถุประสงค์เพื่อออกแบบและพัฒนาระบบ Video Conference โดยการใช้หุ่นยนต์ FOBI เป็นสื่อกลางระหว่าง 2 ผู้ใช้งาน ผ่านแอพพลิเคชั่นที่ถูกสร้างด้วยโปรแกรม Unity และออกแบบระบบออนไลน์ด้วย WebRTC

System Scenario

เมื่อ User 1 ทำการกดเริ่มในโปรแกรม ก็จะทำการเปิด Video Chat แล้วส่งข้อมูลไปยัง Server ที่ถูกสร้างมาจาก WebRTC (สถานะปัจจุบันยังเป็น Localhost) แล้วทำการส่งข้อมูลไปยังหน้าจอหุ่นยนต์ปลายทาง เพื่อทำการสื่อสารกันระหว่าง User 1 และ 2

System Data Flow

ภาพตัวอย่างโปรแกรมที่ได้

ใน Panel ที่ 1 จะประกอบไปด้วย 3 ปุ่ม คือปุ่มออกโปรแกรม, ปุ่มเริ่ม Video Capture (ปุ่ม Start), ปุ่มปิดโปรแกรม

Panel ที่ 2 จะประกอบไปด้วยภาพ Video Capture ที่ถูกเก็บจากกล้องหน้าของระบบ และปุ่ม X คือเป็นการย้อนกลับไปหน้าก่อนหน้า

Code ในการควบคุม Panel ในการสลับหน้าของระบบ

ภายในจะประกอบไปด้วยโค้ดส่วนที่ใช้ในการจัดหน้าของระบบ และการเลื่อนหน้าของระบบว่าจะใช้ Object ใดในการเลื่อนไปหน้าถัดไป ซึ่งในกรณีนี้จะใช้เป็นปุ่ม Start ในการเลื่อนไปข้างหน้า และใช้ปุ่ม X ในการย้อนกลับ

Code ในการทำปุ่มต่างๆ

ปุ่มออกจากโปรแกรม

ปุ่มเข้าหน้าเพจ Facebook

WebRTC ที่ใช้ทำเป็นส่วนของ Server

สามารถดู Source Code ของ Project ได้ตามนี้

https://github.com/Unity-Technologies/UnityRenderStreaming

Example Video

Performance Test

Resolution : 880 x 390
Framerate : 30
Bitrate : 1000+ kbit/sec

ปัญหาที่พบ

1.ปัจจุบันระบบยังเป็นแบบ Localhost อยู่ หากเข้าผ่านอินเตอร์เน็ตที่ไม่ใช่โครงข่ายเดียวกัน เช่น WIFI คนละตัว ก็จะไม่สามารถใช้งานได้ ดังนั้นจึงต้องนำ Firebase ของ Google มาออกแบบพัฒนาเพิ่มเติม เพื่อให้ตัวระบบสามารถใช้ผ่าน Url ได้โดยไม่ต้องใช้อินเตอร์เน็ตโครงข่ายเดียวกัน
2.ตัวกล้องจะทำงานได้ไม่เสถียรและกระตุก หากเปิดในจอที่มีความละเอียดสูงกว่า 1080p ซึ่งตรงส่วนนี้เป็น Bug ของระบบที่รอการแก้ไขจากทาง Unity อยู่
3.หากเปลี่ยนไปใช้วิธีสร้าง Server แบบอื่นๆนั้น เช่น Agora จะถูกจำกัดการใช้งานรายเดือน และมี Delay ที่สูงกว่า (0.5 – 1 วินาที)