Displaying articles with tag red5

Red5 :: Recorder

Posted by PunNeng, Mon Sep 25 01:12:00 UTC 2006

ผมจะเริ่มต้นด้วยการดูตัวอย่างกันก่อนว่าผลของการบันทึก vdo จาก webcam (host ที่รันอยู่นี้ ไม่ได้ติดตั้ง red5 ครับ เลยไม่สามารถแสดงตัวอย่างของจริงได้)
และ
อันนี้เล่นกับ effect ของกล้องครับ เริ่มกันเลย

อันดับแรกก็เปิด service ของ Red5 มาก่อน จากนั้นเปิด flash ขึ้นมาแล้วไปสร้าง vdo ใน library มาก่อน แล้วลากมาแปะไว้ที่ stage แล้วตั้งชื่อให้มัน สมมติผมตั้งชื่อให้มันว่า vdo แล้วกัน จากนั้น

  1
  2
  3
  4
  5
  6
var nc:NetConnection = new NetConnection();
var ns:NetStream;
var vdo:Video;
var cam:Camera = Camera.get();
var mic:Microphone = Microphone.get();
vdo.attachVideo(cam);

เพิ่ม code ส่วนนนี้ไป โดยประกาศ NetConnection มาก่อนไว้ต่อกับ Red5 NetStream ไว้จัดการกับ Stream ภาพและเสียง Video ไว้จัดการกับตัว Vdo ซึ่งตั้งชื่อไว้ตั้งแต่แรกกับตัว vdo แล้ว Camera ไว้จัดการกับตัวกล้อง Microphone ไว้จัดการกับไมค์โครโฟน

หลังจากประกาศตัวแปรแล้วก็ทำการสั่งให้ vdo แสดงภาพที่มาจากกล้อง โดย attachVideo()

จากนั้นก็ต้องต่อกับ Red5 โดยใช้

  1
  2
nc.connect("rtmp://localhost/oflaDemo");
ns = new NetStream(nc);

โดย oflaDemo เป็น service ที่สร้างไว้แล้วเราเรียกใช้ได้เลย หรือจะสร้างใหม่ก็ได้(แปะไว้ก่อนสำหรับวิธีสร้างใหม่) จากนั้นก็เปิด NetStream แล้วส่ง NetConnection เพื่อทำการเชื่อมต่อ

สำหรับขั้นตอนการบันทึกก็ตามนี้เลย

  1
  2
  3
  4
currentTimer = getTimer();
ns.publish("demo_"+currentTimer,"record");
ns.attachVideo(cam);
ns.attachAudio(mic);

currentTime ก็ทำการนับเวลาไปเรื่อย แล้วสั่ง publish เพื่อทำการบันทึกโดยส่งชื่อ file ไปด้วย จากนั้นก็สั่ง attachVideo และ attachAudio เพื่อทำการส่ง streaming ไปบันทึก

สำหรับการหยุดบันทึก ก็ง่ายแสนง่ายเพียงแค่

  1
ns.close();

เพียงแค่นี้ ก็ทำการบันทึกทั้งภาพและเสียงจาก web cam ได้แล้ว ที่อยู่ของ file ก็จะอยู่ที่ yourpath\Red5\webapps\oflaDemo\streams\

ปล. มีปัญหา เปิด help ได้ที่ http://livedocs.macromedia.com/flashcom/mx2004 ปอ. ในความเป็นจริง ยังสามารถใช้ library ของ red5 เองได้ด้วย เข้าไปได้ดูไ้ด้ที่นี่

แก้ไขล่าสุด วันที่ 15 กรกฏาคม 2550 เวลา 23.59 น.

2 comments | Filed Under: General | Tags: red5

Red5 :: SharedObject

Posted by PunNeng, Tue Sep 12 00:28:00 UTC 2006

กลับมาแล้วครับ หลังจากไปซ่อมเว็บอยู่เสียนาน แต่ตอนนี้ก็ยังคงซ่อมอยู่ มีอะไรต้องทำอีกเยอะ เข้าเรื่องกันเลยดีกว่า จากครั้งที่แล้ว ผมได้ค้างไว้ว่าจะมา implement ให้ดู ไปๆ มาๆ ผมขี้เกียจครับ เลยเอาเป็นแบบรวบรัดละกัน ตัวอย่างต่อไปนี้ จะเป็นตัวอย่างการส่งผ่านตัวแปรจาก client ตัวนึง ไปยัง client ทุกๆ ตัว โดยผ่าน SharedObject ซึ่งสามารถนำไปต่อยอดในการทำ game online หรือ chat ได้

อ่า...
เปิด red5 มารันก่อน ใน Start->All Programs->Red5->Red5.exe แล้วเราจะได้หน้าต่าง dos มาหน้านึง

จากนั้นไปที่ flash ของเรา เริ่มด้วยการต่อกับ NetConnection ตามนี้

var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://localhost/SOSample");

ส่วน event ต่างๆ ของ NetConnection สามารถดูได้ที่นี่

โดยตัว service ที่เป็น default มันมีอยู่แล้ว และ SOSample ก็เป็นหนึ่งในนั้น สำหรับการสร้าง service ขึ้นมาใช้เอง ผมแปะไว้ก่อนละกัน(อีกแล้ว มันต้องใช้ eclipse มา build project กันใหม่เลย มันวุ่นวาย เอาไว้ก่อนละกัน) เมื่อรันได้แล้ว ในหน้า dos อันนั้น จะมีข้อความชุดนี้ขึ้น

jvm 1    | [WARN] 1323984 IoWorker-1:( org.red5.server.net.rtmp.RTMPMinaIoHandle
r.warn ) Is tcp delay enabled: false
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.Server.debug ) Check hos
t and path: localhost/SOSample
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.CoreHandler.debug ) Conn
ect to core handler ?
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.adapter.ApplicationAdapt
er.debug ) appConnect: RTMPMinaConnection from 127.0.0.1:1209 to localhost (in:
3312, out: 3073)
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.adapter.ApplicationAdapt
er.debug ) appJoin: Client: 2 >> [WebScope@aae86e Depth = 1, Path = '/default',
Name = 'SOSample']

ในนี้จะเป็น logs ที่บอกรายละเอียดต่างๆ สำหรับ event ที่เข้ามา

ต่อจากนี้ จะเป็นหัวใจสำหรับการใช้งาน ShareObject

เพิ่ม code ต่อจากข้างบนดังนี้

var get_so:SharedObject = SharedObject.getRemote("test",my_nc.uri, true);
get_so.onSync = function() {
  trace(get_so.data.my_text);
};
get_so.connect(my_nc);

บรรทัดแรกก็ประกาศตัวแปร SharedObject ขึ้นมาก่อน ซึ่งเราจะใช้ getRemote คือการเรียกใช้ SharedObject ผ่าน server แล้วบรรทัดต่อมา จะเป็น event ที่ชื่อว่า onSync ซึ่ง event ตัวนี้จะเป็นตัวที่จะถูกเรียกเมื่อได้รับข้อมูลที่ส่งมาจาก server ผมว่าส่วนสำคัญอยู่ที่ตรง onSync ตัวนี้ละครับ เขียนจัดการกับมันให้ดีๆ

เขียนส่วนรับไปแล้ว มาดูส่วนที่ส่งกันบ้าง

_root.onMouseDown = function(){
  var set_so:SharedObject = SharedObject.getRemote("test",my_nc.uri, true);
  set_so.data.my_text = "helloworld";
}

จากน้นก็ประกาศตัวแปร SharedObject มาอีกตัว เพื่อทำการส่งข้อมูล เมื่อ onMouseMove ทำงาน มันจะทำการ set ข้อมูล แต่การเซ็ตนี้สร้างจาก getRemote คือเซ็ตบนฝั่ง server เมื่อเซ็ตแล้ว onSync ของ client แต่ละตัวก็จะทำงาน

ปล. มีปัญหา เปิด help ได้ที่ http://livedocs.macromedia.com/flashcom/mx2004 ปอ. ในความเป็นจริง ยังสามารถใช้ library ของ red5 เองได้ด้วย เข้าไปได้ดูไ้ด้ที่นี่

แก้ไขล่าสุด วันที่ 13 กรกฏาคม 2550 เวลา 23.23 น.

0 comments | Filed Under: General | Tags: red5

Flash :: Red5

Posted by PunNeng, Sun Aug 20 03:01:00 UTC 2006

กลับมานั่งทำ flash สักที หลังจากที่ไปคลุกคลีกับ Ruby on Rails ซะเยอะ สำหรับ RoR คิดว่าคนที่อ่านๆ มา คงจะได้เห็นภาพกันบ้าง ผมจะค่อยๆ ทยอยๆ เขียนไปเรื่อยๆ เพราะบนโลกของรางรถไฟนี้ มันช่างยาวแสนยาวววว

มาคราวนี้ จะมาเจาะด้าน flash server กันเต็มๆ เริ่มด้วย Red5 ถ้าจัดการตัวนี้เสร็จแล้วอาจจะไปลอง smartfox ต่ออีกสักหน่อย แต่คราวนี้จะเริ่มด้วย Red5 เลยละกัน

What is Red5

Red5 คือ application server ตัวนึง ที่ทำหน้าที่กระจายสัญญาณต่างๆ ไม่ว่าจะเป็น vdo/audio/data โดยจะให้ flash มาเรียกใช้

What does Red5 do

  • Real-time Multi-player gaming
  • Multi-user video chat
  • Stream Music/Audio
  • Stream video
  • Broacast Live Streams to anyone with a flash client
  • Record Video
  • Record Audio

แล้วผมจะค่อยๆ มาไล่ implement พวกนี้ให้ดูเรื่อยๆ ละกันครับ

นี่เป็นอย่างคร่าวๆ ถ้าสนใจเต็มๆ ลองเข้าไปใน http://www.osflash.org/red5 เพราะผมก็เอาข้อมูลมาจากที่นี่เหมือนกัน

แก้ไขล่าสุด วันที่ 13 กรกฏาคม 2550 เวลา 1.58 น.

0 comments | Filed Under: General | Tags: red5

codegent: we're hiring