# การเรียกใช้ระบบ Live Transcoding ด้วย API

หากคุณต้องการใช้งานฟีเจอร์ Live Transcoding ด้วยการเรียกใช้ผ่าน API เพื่อเปิดหรือปิด Stream ด้วยการควบคุมจากซอฟต์แวร์ของคุณ สามารถติดต่อทีมงานได้ผ่านอีเมล support@inox.co.th

หลังจากที่ได้รับ access และ secret keys แล้ว คุณสามารถเรียกใช้ API เพื่อจัดการ ByteArk Live Transcoder ได้ดังต่อไปนี้

รายชื่อ API สำหรับระบบ Live Stream Transcoder

  1. การสร้าง Live Stream ใหม่ (createchannel)
  2. การตรวจสอบรายการช่อง Live Stream ที่เปิดไว้ (listchannels)
  3. การลบช่อง Live Stream ที่ไม่ใช้งานแล้ว (deletechannel)
  4. การตัดการเชื่อมต่อการส่ง Live Stream (dropchannelpublisher)
  5. การรีเซ้ตสถานะการทำงานของ Live Transcoder (dropchanneltranscoder)

# วิธีการเรียกใช้ API เบื้องต้น

curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/:apiFunctionName -d [parameters]
1

ส่ง 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'
1

ใช้สำหรับสร้างช่อง 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" }
1
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
1

ใช้สำหรับแสดงรายชื่อช่องที่มีการเปิดไว้ โดยจะมีการแสดงสถานะระบบ 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]"
1

ใช้สำหรับลบช่องสัญญาณที่ใช้งานเสร็จแล้ว โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการลบ หลังจากช่องถูกลบไปแล้วจะมีการตัดสัญญาณ และจะไม่สามารถใช้งาน stream key และ stream url นั้นเพื่อรับส่งสัญญาณได้อีก

# 4. การตัดการเชื่อมต่อการส่ง Live Stream (dropchannelpublisher)

curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/dropchannelpublisher -d "streamname=[streamname]"
1

ใช้สำหรับตัดการเชื่อต่อสัญญาณ RTMP ที่ส่งมายังระบบ เพื่อให้ระบบพร้อมสำหรับรับสํญญาณใหม่อีกครั้ง โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการเริ่มสัญญาณใหม่

โดยปกติแล้ว ผู้ดูแลระบบจะใช้คำสั่งนี้เมื่อพบว่าสัญญาณที่ส่งเข้ามาในระบบมีปัญหาหรือมีสถานะการส่งไม่ถูกต้อง เพื่อให้ระบบได้รีเซ้ตสถานะการทำงาน

การคืนค่า status=1 หมายถึงการตัดสัญญาณทำงานเรียบร้อย หากซอฟต์แวร์ฝั่งส่งมีการพยายามส่งสัญญาณมาใหม่ ระบบจะทำงานต่อไปโดยอัตโนมัติ หลังจากคำสั่งทำงานแล้วจะมีการดรอปของสัญญาณภาพช่วงระยะเวลาประมาณ 5-15 วินาที

# 5. การตัดการเชื่อมต่อของ Live Transcoder (dropchanneltranscoder)

curl -XPOST https://fleet.byteark.com/api/:serviceId/:apiKey/dropchanneltranscoder -d "streamname=[streamname]"
1

ใช้สำหรับตัดการเชื่อต่อระบบ Live Transcoder เพื่อให้ระบบแปลงสัญญาณได้รีเซ้ตสถานะการทำงานใหม่ โดยให้เรียกคำสั่งนี้พร้อมกับ streamname ของช่องที่ต้องการเริ่มสัญญาณใหม่ โดยปกติแล้ว ผู้ดูแลระบบจะใช้คำสั่งนี้เมื่อพบว่าสัญญาณที่ส่งเข้ามาในระบบมีปัญหาหรือมีสถานะการส่งไม่ถูกต้อง เพื่อให้ระบบได้รีเซ้ตสถานะการทำงาน

การคืนค่า status=2 หมายถึงการตัดสัญญาณทำงานเรียบร้อย หากซอฟต์แวร์ฝั่งส่งมีการพยายามส่งสัญญาณมาใหม่ ระบบจะทำงานต่อไปโดยอัตโนมัติ หลังจากคำสั่งทำงานแล้วจะมีการดรอปของสัญญาณภาพช่วงระยะเวลาประมาณ 5-15 วินาที

# ข้อจำกัดการใช้งาน

  1. ระบบ Transcoding Cloud จะจำกัดจำนวน Live Stream ที่สามารถส่งได้พร้อมกันใน Account นั้นตามจำนวนที่ระบุใน transcodelimit หากคุณต้องการเพิ่มจำนวนการ stream พร้อมกันกรุณาติดต่อทีมงานผ่านอีเมล sales@byteark.com