การต่อสู้จริงของ Tencent Cloud Audio and Video (TRTC): การถ่ายทอดสดออนไลน์ที่มีเวลาแฝงต่ำและการสร้างการโทรวิดีโอหลายคน
วันนี้เมื่อการเชื่อมต่อออนไลน์การสื่อสารทางไกลการเรียนการสอนออนไลน์และการถ่ายทอดสดแบบโต้ตอบเป็นที่นิยมนักพัฒนาจำนวนมากได้รับความต้องการ "สร้างฟังก์ชันการโทรด้วยเสียงและวิดีโอที่มีเวลาแฝงต่ำ" หากคุณเริ่มต้นจากศูนย์เพื่อทำลายโปรโตคอล WebRTC สร้างเซิร์ฟเวอร์สตรีมมิ่งเสียงและวิดีโอปรับการเพิ่มประสิทธิภาพเครือข่ายที่อ่อนแอและการกำจัดเสียงสะท้อน (AEC) คาดว่าหากผมร่วงอาจไม่สามารถสร้างเวอร์ชันเชิงพาณิชย์ที่เสถียรได้
การพัฒนาเสียงและวิดีโอระดับองค์กรเส้นทางที่ประหยัดเวลาและประหยัดแรงงานที่สุดคือการเข้าถึง Tencent Cloud โดยตรง
TRTC (เสียงและวิดีโอแบบเรียลไทม์, Tencent Real-Time Communication)
。มันห่อหุ้มเลเยอร์ด้านล่างของเสียงและวิดีโอที่ซับซ้อนลงในการโทร SDK ง่ายๆเพียงไม่กี่บรรทัดและสืบทอดเครือข่ายการเร่งความเร็วทั่วโลกของ Tencent โดยธรรมชาติซึ่งสามารถระงับความล่าช้าแบบ end-to-end ทั่วโลกได้
ภายใน300มิลลิวินาที
。
วันนี้ฉันไม่ได้อ่านเอกสารอย่างเป็นทางการและปฏิเสธเรื่องไร้สาระใดๆนำคอมพิวเตอร์ของคุณมาพูดคุยจากสถาปัตยกรรมหลักและเชื่อมต่อระบบการถ่ายทอดสดออนไลน์และวิดีโอคอลแบบผู้เล่นหลายคนที่มีเวลาแฝงต่ำของคุณเอง
ขั้นตอนแรก: ทำความเข้าใจกับเครือข่ายการสื่อสารพื้นฐานของ TRTC และแนวคิดของ "ห้อง"
ก่อนที่จะเขียนโค้ดคุณต้องสร้างแบบจำลองโลกทางกายภาพของ TRTC ในใจมิฉะนั้นคุณจะไม่รู้ด้วยซ้ำว่าสตรีมถูกส่งผ่านไปอย่างไร
การโต้ตอบเสียงและวิดีโอทั้งหมดของ TRTC อยู่ในไฟล์
“ห้อง (Room)”
ในพื้นที่เสมือนจริง
EnterRoom: ผู้ใช้ทุกคน (ไม่ว่าจะเป็นผู้ประกาศข่าวหรือผู้ชม) ต้องการพูดคุยหรือดูคนอื่นพูดก่อนอื่นต้องเข้าห้องเดียวกันด้วย "หมายเลขห้อง"
เผยแพร่: หลังจากเข้ามาในห้องหากคุณต้องการให้คนอื่นเห็นคุณคุณสามารถ "ผลักดัน" ข้อมูลเสียงและวิดีโอที่รวบรวมโดยโทรศัพท์มือถือหรือกล้องคอมพิวเตอร์ของคุณไปยังระบบคลาวด์ผ่านโหนดขอบของ Tencent Cloud
Subscribe: หากคุณต้องการดู Zhang San ในห้อง SDK จะไปที่ Tencent Cloud โดยอัตโนมัติเพื่อ "ดึง" "สตรีม" ของ Zhang San เพื่อถอดรหัสและเล่น
ในระหว่างการโทรอัลกอริทึม3A ของเทนเซ็นต์คลาวด์แบ็กเอนด์ (การลดเสียงสะท้อน AEC, การลดเสียงรบกวน ANS, การควบคุมอัตราขยายอัตโนมัติ AGC) จะเชื่อมต่อโดยอัตโนมัติตลอดกระบวนการทั้งหมดซึ่งเป็นสาเหตุที่คุณไม่จำเป็นต้องเขียนโค้ดเพื่อ "ลบเสียง" ของเสียง
ขั้นตอนที่สอง: การกำหนดค่าพื้นหลัง Tencent Cloud และใบรับรองการช่วยชีวิตการสร้างการคำนวณ UserSig
ลงชื่อเข้าใช้ Tencent Cloud Console ค้นหาและป้อน "เรียลไทม์เสียงและวิดีโอ TRTC"
คลิก "การจัดการแอปพลิเคชัน"-> "สร้างแอปพลิเคชัน" และตั้งชื่อแอปพลิเคชันของคุณ (เช่นระบบเสียงและวิดีโอที่มีเวลาแฝงต่ำของฉัน)
หลังจากสร้างสำเร็จระบบจะออกบัตรกำนัลหลักให้คุณสองใบนำสมุดบันทึกขนาดเล็กและจดไว้อย่าเปิดเผย: SDKAppID: บัตรประจำตัวที่ไม่ซ้ำกันของแอปพลิเคชันของคุณ (สตริงของตัวเลขบริสุทธิ์) คีย์ (SecretKey): สตริงที่ใช้ในการเข้ารหัสลายเซ็น
จุดหลีกเลี่ยงหลัก: UserSig คืออะไร?
เพื่อป้องกันไม่ให้ผู้อื่นยักยอก TR ของคุณโดยมีเจตนาร้าย
TC Traffic ผู้ใช้ที่ต้องการเข้าห้องของคุณจะต้องนำไฟล์
UserSig
ลายเซ็นที่ปลอดภัย (เทียบเท่ากับบัตรผ่านชั่วคราว)
ขั้นตอนการพัฒนาและการทดสอบ (สตรีมด่วน): ไมโครแท็บหรือคอนโซลมีหน้า "การกำหนดค่าพื้นฐาน" คุณสามารถป้อนชื่อผู้ใช้ (UserId) ของคุณได้โดยตรงบนหน้าเว็บและจะช่วยคุณคำนวณ UserSig ชั่วคราวได้ด้วยคลิกเดียวคัดลอกลงในรหัสโดยตรง
ขั้นตอนการผลิตออนไลน์ (สตรีมฮาร์ดคอร์): อย่าใส่รหัส SecretKey ของคุณในแอปหรือโค้ดส่วนหน้า! วิธีที่ถูกต้องคือเขียนตรรกะของการคำนวณ UserSig ในเซิร์ฟเวอร์แบ็คเอนด์ของคุณ (เช่นการใช้สคริปต์ Node.js, Java หรือ Python) ก่อนที่แอปจะเข้าห้องขั้นแรกให้ขอให้อินเทอร์เฟซเซิร์ฟเวอร์ของตัวเองใช้ UserSig เพื่อความปลอดภัย
ขั้นตอนที่สาม: การฝึกซ้อมการต่อสู้จริงการสร้างฉากการสนทนาทางวิดีโอหลายคน (การต่อสู้แบบโต้ตอบเต็มรูปแบบ)
คุณสมบัติของแฮงเอาท์วิดีโอ (เช่นการประชุมผู้บริหารการฆ่าสคริปต์ออนไลน์) คือ:
ทุกคนในห้องเป็นตัวเอกทุกคนต้องผลักดันกระแสและต้องดูกระแสของคนอื่นด้วยความต้องการความล่าช้าสูงมาก
เราใช้ทั่วไปมากที่สุด
Web/ H5เทอร์มินัล JavaScript SDK
ตัวอย่างเช่น (ตรรกะ iOS/Android เทียบเท่าอย่างสมบูรณ์) รหัสหลัก5บรรทัดจะนำคุณผ่าน:
1.แนะนำและเริ่มต้น SDK
JavaScript
Import TRTC from 'trtc-js-sdk';
// 1.สร้างลูกค้า TRTC วัตถุ
Const client = TRTC.createClient({
โหมด: 'rtc', // rtc หมายถึงโหมดการสนทนาทางวิดีโอแบบผู้เล่นหลายคนที่มีเวลาแฝงต่ำมาก
SdkAppId: 1400xxxxxx, // กรอก SDKAppID ของคุณ
UserId: 'user _ boss', // ID ของผู้ใช้ปัจจุบัน
UserSig: 'xxxxxxxxx' // ลายเซ็นที่คำนวณบนคลาวด์
});
2.เข้าบ้านและรวบรวมและผลักดันการไหล
JavaScript
// 2.เข้าห้อง (หมายเลขห้อง: 12345)
Await client.join({ roomId: 12345 });
// 3.จับภาพเสียงและวิดีโอจากกล้องท้องถิ่นและไมโครโฟน
Const localStream = TRTC.createStream({ audio: true, video: true });
Await localStream.initialize(); // เริ่มต้นกล้อง
// 4.ติดหน้าจอท้องถิ่นไปยังแท็บ <div> ของหน้าเว็บเพื่อแสดงให้ตัวเองเห็น
Local
Stream.play('local-video-view');
// 5.ผลักดันสตรีมของคุณไปที่ Tencent Cloud เพื่อให้คนอื่นๆในห้องเห็น
Await client.publish(localStream);
3.ตรวจสอบและดึงภาพของผู้อื่น
เมื่อมีคนอื่นเข้ามาในห้อง (เช่น
User_employee
) และเมื่อกดสตรีม SDK จะทริกเกอร์เหตุการณ์เราเพียงแค่ต้องตรวจสอบและดึงสตรีม:
JavaScript
// 6.ตรวจสอบเหตุการณ์ที่เพิ่มขึ้นของสตรีมระยะไกล
Client.on ('stream-added', event => {
Const remoteStream = event.stream;
// สมัครสมาชิกภาพของบุคคลนี้
Client.subscribe (remoteStream);
});
// 7.ตรวจสอบเหตุการณ์ที่ประสบความสำเร็จในการสมัครสมาชิกสตรีมระยะไกลและติดตั้งบนหน้าเว็บ
Client.on ('stream-subscribed', event => {
Const remoteStream = event.stream;
// สร้างบล็อก div ใหม่และใส่วิดีโอของผู้ใช้ระยะไกล
RemoteStream.play ('remote-video-view-'remoteStream.getUserId());
});
ตราบใดที่อุปกรณ์ทั้งสองด้านใช้ตรรกะนี้ระบบการประชุมทางวิดีโอแบบผู้เล่นหลายคนที่มีคุณภาพของภาพความละเอียดสูงและมีเวลาแฝงต่ำถึง200มิลลิวินาทีจะถูกสร้างขึ้นใหม่โดยตรง
ขั้นตอนที่สี่: การฝึกซ้อมการต่อสู้จริง2-การสร้างฉากถ่ายทอดสดออนไลน์ที่มีเวลาแฝงต่ำ (ผู้ชม10,000คน Lianmai)
ลักษณะของฉากถ่ายทอดสด (เช่นการถ่ายทอดสดพร้อมสินค้าคนดังทางอินเทอร์เน็ต PK) แตกต่างจากการประชุมอย่างสิ้นเชิง:
มีเพียงหนึ่งหรือสองจุดยึดในห้องที่กำลังผลักดันอย่างเมามันและมีผู้ชมนับหมื่นหรือหลายแสนคนกำลังดูอยู่หากผู้คนหลายแสนคนได้รับอนุญาตให้เข้ามาในบ้านพร้อมกันเพื่อผลักดันซึ่งกันและกันแบนด์วิดท์ของเซิร์ฟเวอร์จะระเบิดทันทีและค่าใช้จ่ายจะสูง
เมื่อ TRTC จัดการกับข้อกำหนดการถ่ายทอดสดจะใช้
"การสลับบทบาท"
และ
"เมฆผสม"
กลไก.
1.โหมดสลับ
เมื่อเริ่มต้นไคลเอนต์จะต้องเปลี่ยนโหมดเป็น
ใช้ชีวิต
:
JavaScript
const client = TRTC.createClient({
โหมด: 'Live ', // Live ย่อมาจากโหมดถ่ายทอดสดแบบโต้ตอบ
SdkAppId: 1400xxxxxx,
UserId: 'user _ audience',
UserSig: 'xxxxxxxxx'
});
2.แยกแยะบทบาทของผู้ประกาศข่าวและผู้ชม
เมื่อเข้าห้องคุณต้องประกาศตัวตนที่แท้จริงของคุณอย่างชัดเจน:
Anchor: ด้วยสิทธิ์ในการผลักดันสตรีมคุณสามารถพูดกับกล้องได้
ผู้ชมทั่วไป: ตามค่าเริ่มต้นคุณสามารถรับชมสตรีมได้เท่านั้นและไม่ใช้แบนด์วิดท์อัปลิงค์สตรีมของ Tencent Cloud ซึ่งคุ้มค่ามาก
JavaScri
// ผู้ชมเข้ามาในห้อง
Await client.join({ roomId: 88888, role: 'audience' });
// หากผู้ชมต้องการสมัคร "เชื่อมต่อไมโครโฟนบนเวที" ไม่จำเป็นต้องเช็คเอาท์เพียงแค่เรียกบรรทัดคำสั่ง "การเปลี่ยนแปลงในสถานที่":
Await client.switchRole('anchor');
// หลังจากแปลงร่างเป็นจุดยึดแล้วคุณสามารถคัดลอกโค้ดของขั้นตอนที่สามเปิดกล้องและเผยแพร่สตรีมของคุณเอง
3.สุดยอดเคล็ดลับการประหยัดเงิน: เปิดใช้งาน CDN บายพาสการถ่ายทอดสด
หากผู้คนนับล้านดูการถ่ายทอดสดของคุณในเวลาเดียวกันให้ใช้ TRTC แบบเรียลไทม์เพื่อไหลไปยังเครือข่ายกระดูกสันหลังของ Dachang และค่าบริการข้อมูลดาวน์ลิงค์จะแพงมากจนคุณสงสัยในชีวิต
โซลูชันผู้ผลิตมาตรฐาน: เปิดตัวเลือก "บายพาสการถ่ายทอดสด" ในพื้นหลังของ Tencent Cloud
ตรรกะในการดำเนินงาน: แองเคอร์ผลักดันสตรีมในห้อง TRTC และพื้นหลังของ Tencent Cloud จะ "คัดลอก" สตรีมแบบเรียลไทม์ที่มีความเที่ยงตรงสูงนี้โดยอัตโนมัติและแปลงเป็นสตรีมสดมาตรฐานธรรมดา (RTMP/HLS/WebRTC) ในระบบคลาวด์โดยตรงเครือข่ายการกระจาย CDN ถูกแจกจ่ายให้กับผู้เข้าชมหลายล้านคน
ด้วยวิธีนี้แองเคอร์ของ Lianmai จะมีเวลาแฝงต่ำมากถึง300มิลลิวินาทีและฝูงชนที่เฝ้าดูฝูงชนที่มีชีวิตชีวาจะใช้เวลา1 ~ ความล่าช้าของ CDN ปกติ2วินาทีแต่ช่วยให้คุณประหยัดงบประมาณแบนด์วิดท์ได้ถึง70%
ขั้นตอนที่5: ประวัติการหลีกเลี่ยงเลือดและน้ำตาในการดำเนินงานและการบำรุงรักษาประจำวัน
สิทธิ์ของอุปกรณ์ติดขัด: หน้าเว็บ (H5) พัฒนาเสียงและวิดีโอเนื่องจากนโยบายความปลอดภัยเบราว์เซอร์ต้องอยู่ในสภาพแวดล้อม HTTPS หรือโลคัลโฮสต์ในเครื่องเพื่อเรียกกล้องและไมโครโฟนตามปกติหากคุณใช้ HTTP เพื่อปรับใช้กับเซิร์ฟเวอร์ SDK จะรายงานข้อผิดพลาดโดยตรงแม้จะเริ่มต้น
การเพิ่มประสิทธิภาพเครือข่ายมือถือที่อ่อนแอ: ในคอนโซลอย่าลืมตรวจสอบเพื่อเปิดกลยุทธ์ "Smooth" เมื่อสัญญาณ4G/5G ของผู้ใช้แย่ลงอย่างกะทันหันระบบจะบีบอัดความละเอียดโดยอัตโนมัติลดอัตราเฟรมและให้ความสำคัญกับการตรวจสอบให้แน่ใจว่าเสียงไม่ติดขัดหรือกลายเป็น PPT ซึ่งเรียกว่า "กลไกการชดเชยการสูญเสียแพ็กเก็ต (PLC)"
สรุป
เคล็ดลับการต่อสู้ที่แท้จริงของ Tencent Cloud TRTC นั้นบริสุทธิ์มาก:
โหมด rtc ถูกเลือกสำหรับการประชุมและสมาชิกทุกคนมีสิทธิ์เท่าเทียมกันโหมดถ่ายทอดสดถูกเลือกและมีการแยกแยะหลักและทาสผ่านรูและการรับส่งข้อมูลจำนวนมากจะต้องร่วมมือกับ CDN บายพาส
ตราบใดที่ตรรกะนี้ตรงไปตรงมาไม่ว่าจะเป็นการให้บริการลูกค้าวิดีโอที่กำหนดเองสำหรับองค์กรหรือแพลตฟอร์มการถ่ายทอดสดแบบโต้ตอบหลายสิบล้านรายการคุณสามารถใช้รหัสที่หรูหราที่สุดเพื่อทำลายกระดูกแข็งของการพัฒนาเสียงและวิดีโอได้อย่างสมบูรณ์

