# การเรียกใช้ระบบ Live Transcoding ด้วย API
หากคุณต้องการใช้งานฟีเจอร์ Live Transcoding ด้วยการเรียกใช้ผ่าน API เพื่อเปิดหรือปิด Stream ด้วยการควบคุมจากซอฟต์แวร์ของคุณ สามารถติดต่อทีมงานได้ผ่านอีเมล support@inox.co.th
หลังจากที่ได้รับ access และ secret keys แล้ว คุณสามารถเรียกใช้ API เพื่อจัดการ ByteArk Live Transcoder ได้ดังต่อไปนี้
รายชื่อ API สำหรับระบบ Live Stream Transcoder
- การสร้าง Live Stream ใหม่ (createchannel)
- การตรวจสอบรายการช่อง Live Stream ที่เปิดไว้ (listchannels)
- การลบช่อง Live Stream ที่ไม่ใช้งานแล้ว (deletechannel)
- การตัดการเชื่อมต่อการส่ง Live Stream (dropchannelpublisher)
- การรีเซ้ตสถานะการทำงานของ Live Transcoder (dropchanneltranscoder)
# วิธีการเรียกใช้ API เบื้องต้น
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/:apiFunctionName -d [parameters]
ส่ง HTTP Requests มาที่ปลายทาง https://fleet.byteark.com/api โดยระบุข้อมูลที่จำเป็นดังนี้
- serviceId : หมายเลขของเซอร์วิส ByteArk ที่คุณเปิดใช้งาน
- apiKey : API Key สำหรับเรียกใช้งาน API ใน Service ID ที่เรียกใช้
- apiFunctionName : ชื่อของ API ที่เรียกใช้
- parameters : พารามิเตอร์เพิ่มเติมของฟังก์ชั่นนั้นๆ โดยจะมีการส่งเป็นคู่ของ Key Value
หลังจากส่งแล้ว ระบบ Fleet API จะตอบกลับมาด้วยสถานะ 200 และ JSON Object ที่เป็น response ของ API นั้นๆ โดยมีรายละเอียดการใช้งานของแต่ละ API ดังต่อไปนี้
# รายชื่อ API สำหรับระบบ Live Stream Transcoder
# 1. การสร้าง Live Stream ใหม่ (createchannel)
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/createchannel -d 'transcode[1080p]=1&transcode[720p]=1&transcode[480p]=1&streamname=teststream'
ใช้สำหรับสร้างช่อง Live Stream ใหม่ โดยในคำสั่งจะให้ระบุความละเอียดของ Live Stream ที่จะถูกนำไปแสดงผล โดยมีพารามิเตอร์ดังนี้
- ชื่อของสตรีม (streamname)
- รายชื่อความละเอียดที่ต้องการ โดยให้ระบุความละเอียดที่ต้องการ ได้แก่ transcode[1080p] , transcode[720p] , transcode[576p] , transcode[480p], transcode[360p], transcode[240p] และให้ระบุค่า =1 หากต้องการใช้าน
หลังจากการเรียก API เสร็จสิ้น ระบบจะคืนค่าสถานะการใช้งาน Transcoder ที่มีอยู่ในปัจจุบัน และ RTMP Endpoint ที่จะใช้รับสัญญาณ ผู้ใช้สามารถนำ "streamendpoint" และ "streamkey" ไปใช้ในซอฟต์แวร์สำหรับส่ง RTMP เพื่อส่งสัญญาณเข้าสู่ระบบ ByteArk และรับชม stream ผ่าน streamurl ที่ลงท้ายด้วย index.m3u8 ที่ระบบ API คืนให้ได้
{ "transcodelimit" :5,
"transcodeusage" :3,
"streamid" :450,
"streamname" :"testapi2",
"streamkey" :"t5bx-fwr7-mywm",
"streamsource" :"",
"streammode" :"PUSH",
"streamendpoint" :"rtmp:\/\/publish.fleet.byteark.com\/fleet",
"transcoder": {
"1080p": { "enabled" :true, "bitrate" :"auto" },
"720p": { "enabled" :true, "bitrate" :"auto" },
"576p": { "enabled" :false, "bitrate" :"auto" },
"480p": { "enabled" :true, "bitrate" :"auto" },
"360p": { "enabled" :false, "bitrate" :"auto" },
"240p": { "enabled" :false, "bitrate" :"auto" }
},
"streamurl" :"https:\/\/teststream-gmwjpl.cdn.byteark.com\/fleetstream\/testapi2\/index.m3u8" }
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2. การตรวจสอบรายการช่อง Live Stream ที่เปิดไว้ (listchannels)
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/listchannels
ใช้สำหรับแสดงรายชื่อช่องที่มีการเปิดไว้ โดยจะมีการแสดงสถานะระบบ Transcode ที่มีการใช้ในปัจจุบัน และรายละเอียดของแต่ละช่องที่เปิดไว้ ดังนี้
- transcodelimit : จำนวนช่องสัญญาณที่สามารถเปิดได้สูงสุดพร้อมกันในแอคเค้าน์ของคุณ
- transcodeusage : จำนวนช่องสัญญาณที่มีการใช้ไปแล้ว
ในส่วนของ channels จะเป็น List ของ Objects ที่เก็บรายละเอียดของช่องซึ่งมีรายละเอียดต่างๆ ดังนี้
- streamid : หมายเลขของช่องสตรีมในระบบ
- streamname : ชื่อของสตรีมที่ตั้งค่าไว้
- streamkey : key ของปลายทาง RTMP สำหรับสตรีมนี้
- streammode : รูปแบบการรับสัญญาณ โดย "PUSH" จะหมายถึงระบบให้ผู้ใช้ส่งสัญญาณมายัง RTMP ที่กำหนด และ "PULL" จะหมายถึงระบบจะดึงสัญญาณ RTMP จากต้นทางที่ผู้ใช้กำหนด
- streamendpoint : เซิร์ฟเวอร์ปลายทางที่ให้ผู้ใช้ส่ง RTMP
- streamurl : ลิ้งก์ของ Live Stream ที่ผู้ใช้สามารถนำไปรับชมได้
- transcoder: เป็น List ของรายชื่อความละเอียดสตรีมที่เปิดไว้ โดยจะระบุชื่อด้วยความละเอียดและสถานะการเปิดใช้งาน เช่น 1080p : {"enabled" : true} หมายถึงมีการเปิดใช้งานการ transcode สัญญาณให้เป็นความละเอียด 1080p เป็นต้น
# 3. การลบช่อง Live Stream ที่ไม่ใช้งานแล้ว (deletechannel)
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/deletechannel -d "streamname=[streamname]"
ใช้สำหรับลบช่องสัญญาณที่ใช้งานเสร็จแล้ว โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการลบ หลังจากช่องถูกลบไปแล้วจะมีการตัดสัญญาณ และจะไม่สามารถใช้งาน stream key และ stream url นั้นเพื่อรับส่งสัญญาณได้อีก
# 4. การตัดการเชื่อมต่อการส่ง Live Stream (dropchannelpublisher)
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/dropchannelpublisher -d "streamname=[streamname]"
ใช้สำหรับตัดการเชื่อต่อสัญญาณ RTMP ที่ส่งมายังระบบ เพื่อให้ระบบพร้อมสำหรับรับสํญญาณใหม่อีกครั้ง โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการเริ่มสัญญาณใหม่
โดยปกติแล้ว ผู้ดูแลระบบจะใช้คำสั่งนี้เมื่อพบว่าสัญญาณที่ส่งเข้ามาในระบบมีปัญหาหรือมีสถานะการส่งไม่ถูกต้อง เพื่อให้ระบบได้รีเซ้ตสถานะการทำงาน
การคืนค่า status=1 หมายถึงการตัดสัญญาณทำงานเรียบร้อย หากซอฟต์แวร์ฝั่งส่งมีการพยายามส่งสัญญาณมาใหม่ ระบบจะทำงานต่อไปโดยอัตโนมัติ หลังจากคำสั่งทำงานแล้วจะมีการดรอปของสัญญาณภาพช่วงระยะเวลาประมาณ 5-15 วินาที
# 5. การตัดการเชื่อมต่อของ Live Transcoder (dropchanneltranscoder)
curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/dropchanneltranscoder -d "streamname=[streamname]"
ใช้สำหรับตัดการเชื่อต่อระบบ Live Transcoder เพื่อให้ระบบแปลงสัญญาณได้รีเซ้ตสถานะการทำงานใหม่ โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการเริ่มสัญญาณใหม่ โดยปกติแล้ว ผู้ดูแลระบบจะใช้คำสั่งนี้เมื่อพบว่าสัญญาณที่ส่งเข้ามาในระบบมีปัญหาหรือมีสถานะการส่งไม่ถูกต้อง เพื่อให้ระบบได้รีเซ้ตสถานะการทำงาน
การคืนค่า status=2 หมายถึงการตัดสัญญาณทำงานเรียบร้อย หากซอฟต์แวร์ฝั่งส่งมีการพยายามส่งสัญญาณมาใหม่ ระบบจะทำงานต่อไปโดยอัตโนมัติ หลังจากคำสั่งทำงานแล้วจะมีการดรอปของสัญญาณภาพช่วงระยะเวลาประมาณ 5-15 วินาที
# ข้อจำกัดการใช้งาน
- ระบบ Transcoding Cloud จะจำกัดจำนวน Live Stream ที่สามารถส่งได้พร้อมกันใน Account นั้นตามจำนวนที่ระบุใน transcodelimit หากคุณต้องการเพิ่มจำนวนการ stream พร้อมกันกรุณาติดต่อทีมงานผ่านอีเมล sales@byteark.com