ดีเลย์ไลฟ์ไม่ใช่ปัญหาเสียงไม่ตรงปาก
ผู้ชมเห็นไลฟ์ช้ากว่าจริง กับปากไม่ตรงเสียง เป็นสองปัญหาที่แยกกันและแก้คนละวิธี ดีเลย์แต่ละส่วนมาจากอะไร ส่วนไหนลดได้ และทำไมระยะเหลื่อมที่โตขึ้นเรื่อย ๆ จึงเป็นปัญหาเรื่องนาฬิกา ไม่ใช่เรื่องการตั้งค่าดีเลย์
มีคำบ่นสองแบบที่ฟังแทบเหมือนกัน แต่ไม่เกี่ยวข้องกันเลย "ผู้ชมเห็นช้า" คือดีเลย์ "ปากไม่ตรงกับเสียง" คือการเหลื่อม ทั้งสองแก้กันคนละจุด โดยคนละคน และสิ่งแรกที่มีประโยชน์ที่สุดคือไม่ปฏิบัติกับมันเหมือนเป็นปัญหาเดียวกัน
แยกให้ออกภายในสิบวินาที
| อาการ | คืออะไร | แก้ที่ไหน |
|---|---|---|
| ทุกอย่างมาช้า แต่เสียงกับภาพตรงกัน | ดีเลย์ | การตั้งค่าการส่งและเพลเยอร์ |
| เสียงกับปากไม่ตรงกัน และระยะเหลื่อมคงที่ประมาณเดิม | ระยะเหลื่อมคงที่ | สายสัญญาณเสียงของคุณเอง ก่อนเข้าเอนโค้ดเดอร์ |
| เสียงกับปากไม่ตรงกัน และระยะเหลื่อมโตขึ้นตลอดการไลฟ์ | การเลื่อนไหล (drift) | นาฬิกาของอุปกรณ์เสียงและภาพเดินไม่ตรงกัน |
| มาช้า และ ไม่ตรงปาก | สองปัญหาแยกกัน | แก้เรื่องซิงก์ก่อน เพราะเป็นส่วนที่อยู่ในมือคุณ |
ความต่างที่สำคัญที่สุดคือ ดีเลย์เป็นความล่าช้าที่วางแผนเผื่อไว้ได้ ส่วนซิงก์ไม่ตรงคือความผิดพลาด ดีเลย์สิบวินาทีเป็นการตัดสินใจเชิงออกแบบ แต่เสียงไม่ตรงปากสองร้อยมิลลิวินาทีคือของเสีย ไม่ว่าดีเลย์จะเท่าไรก็ตาม
ดีเลย์ประกอบด้วยอะไรบ้าง
ดีเลย์ไม่ใช่ตัวเลขเดียวที่เกิดจากสิ่งเดียว มันคือผลรวม และแต่ละส่วนมีเจ้าของคนละคน การรู้ว่าส่วนไหนเป็นของใคร จะบอกคุณได้ทันทีว่าคุณทำอะไรกับมันได้หรือไม่
เอนโค้ดเดอร์ของคุณ ต้องรวบรวมเฟรมให้พอเพื่อบีบอัดเทียบกัน แล้วจึงส่งผลลัพธ์ออกไป ส่วนนี้น้อย และส่วนใหญ่ถูกกำหนดโดยการตั้งค่าบัฟเฟอร์ของเอนโค้ดเดอร์เอง
เส้นทางมาถึงเรา คือระยะทางจริงบวกกับการป้องกันที่คุณขอไว้ ถ้าคุณใช้ SRT ใน URL จะมีงบดีเลย์อย่างน้อย 500 ms นั่นคือคุณตั้งใจซื้อความล่าช้าเท่านั้นเพื่อแลกกับการรอดจากแพ็กเก็ตหาย และนั่นคือการแลกเปลี่ยนที่ทำงานตามที่ตั้งใจ ไม่ใช่ความผิดพลาด
การเข้ารหัสและแพ็กเกจของเรา สตรีมจะถูกเข้ารหัสใหม่เป็นชุดความละเอียดหลายระดับ แล้วตัดเป็นเซกเมนต์ dcast ใช้เซกเมนต์ยาว 4 วินาทีพร้อมช่วงคีย์เฟรม 2 วินาที ดังนั้นเซกเมนต์จะเผยแพร่ได้ก็ต่อเมื่อมีครบทั้ง 4 วินาทีแล้ว สำหรับการส่งแบบแบ่งเซกเมนต์ นี่คือส่วนที่ใหญ่ที่สุดในทั้งสาย และเป็นเรื่องของเลขคณิต ไม่ใช่ความไม่มีประสิทธิภาพ
การส่งถึงผู้ชม คือการพาเซกเมนต์ไปถึงที่ที่ผู้ชมอยู่
บัฟเฟอร์ของเพลเยอร์ ก่อนจะแสดงอะไร เพลเยอร์จะสะสมเซกเมนต์ไว้ เพื่อไม่ให้ช่วงที่เน็ตของผู้ชมช้าลงชั่วขณะกลายเป็นภาพค้างให้เห็น ส่วนนี้คือส่วนที่คนส่วนใหญ่ไม่รู้ด้วยซ้ำว่ามีอยู่ และหลายครั้งเป็นส่วนที่ใหญ่ที่สุดรองจากการแพ็กเกจ เพลเยอร์ที่เก็บเซกเมนต์ 4 วินาทีไว้สามเซกเมนต์จะช้ากว่าไลฟ์สิบสองวินาทีตั้งแต่ก่อนวาดเฟรมแรก ไม่ใช่เพราะมีอะไรช้า แต่เพราะมันเลือกที่จะเล่นแบบปลอดภัย
อะไรลดได้ อะไรลดไม่ได้
ลองรวมแต่ละส่วนเข้าด้วยกัน แล้วจะเห็นชัดว่าช่องว่างอยู่ตรงไหน ฟิสิกส์อย่างระยะทางและความเร็วของเครือข่ายเปลี่ยนไม่ได้ บัฟเฟอร์ของเอนโค้ดเดอร์ก็เล็กเสียจนการจูนแทบไม่คุ้มกับความเสี่ยง งบดีเลย์ของ SRT ลดได้ แต่ความทนทานต่อแพ็กเก็ตหายก็จะลดลงเท่ากันพอดี และถ้าคุณเลือกใช้ SRT ก็คงมีเหตุผลอยู่แล้ว
สองส่วนที่มีช่องว่างให้ลดจริง ๆ คือความยาวเซกเมนต์และบัฟเฟอร์ของเพลเยอร์ และทั้งสองเชื่อมโยงกัน เพราะเพลเยอร์บัฟเฟอร์เป็นหน่วยเซกเมนต์ ความยาวเซกเมนต์จึงถูกคูณเข้าไปด้วย บน dcast ฝั่งเพลเยอร์เปิดให้ตั้งเป็นโหมดดีเลย์ของสตรีม ได้แก่ normal, low หรือ ultra และควรเข้าใจให้ชัดว่าการตั้งค่านี้คืออะไร: มันเปลี่ยนปริมาณที่เพลเยอร์บัฟเฟอร์ และไม่ไปถึงเอนโค้ดเดอร์เลย ตารางการเข้ารหัสเหมือนกันทุกสตรีมบนแพลตฟอร์ม
นี่คือรูปแบบการแลกเปลี่ยนที่ตรงไปตรงมา บัฟเฟอร์สั้นลงทำให้ผู้ชมใกล้ไลฟ์มากขึ้น แต่ป้องกันอาการเน็ตกระตุกของตัวเองได้น้อยลง บัฟเฟอร์ยาวขึ้นก็ตรงกันข้าม ไม่มีการตั้งค่าไหนให้ได้ทั้งสองอย่าง และใครที่บอกว่าโปรโตคอลไหนกำจัดการแลกเปลี่ยนนี้ได้ ก็แค่ย้ายมันไปไว้ที่อื่น ไม่ได้ทำให้มันหายไป
ตัดสินใจว่าไลฟ์ของคุณต้อง "สด" แค่ไหน
ไลฟ์ส่วนใหญ่ไม่จำเป็นต้องมีดีเลย์ต่ำ และไลฟ์ที่จำเป็นก็มักจำเป็นด้วยเหตุผลเฉพาะข้อเดียว ซึ่งควรระบุให้ชัดก่อนจะเริ่มยอมเสียความทนทาน
ถ้าผู้ชมโต้ตอบกับคุณแบบสด ๆ เช่น คุณอ่านแชตออกเสียง ตอบคำถาม หรือจัดประมูล ดีเลย์ก็คือหัวใจของทั้งหมด และผู้ชมที่ช้ากว่ายี่สิบวินาทีก็กำลังอยู่ในบทสนทนาคนละวงกับคุณ
ถ้าผู้ชมอาจได้รู้เหตุการณ์ซ้ำสองครั้ง เช่น การแข่งกีฬาที่ห้องข้าง ๆ ส่งเสียงเชียร์ก่อน หรืออะไรก็ตามที่การแจ้งเตือนบนมือถือมาถึงก่อนไลฟ์ของคุณ ดีเลย์ก็กลายเป็นปัญหาสปอยล์
ถ้าไม่เข้าข่ายทั้งสองกรณี ซึ่งไลฟ์ส่วนใหญ่ก็ไม่เข้าข่าย บัฟเฟอร์ที่เผื่อไว้สบาย ๆ คือทางเลือกทางวิศวกรรมที่ดีกว่า เพราะปัญหาที่มันป้องกัน (ภาพค้างกลางการบรรยาย) เห็นชัดสำหรับผู้ชมมากกว่าการช้าไปสิบวินาทีจากเหตุการณ์ที่เขาไม่มีทางดูจากที่อื่นอยู่แล้ว
ดีเลย์ที่คุณเพิ่มให้ตัวเอง
ก่อนจะโทษการส่งสัญญาณ ควรนับดีเลย์ที่เกิดขึ้นภายในห้องของคุณเองก่อน เพราะมันมักมากกว่าที่คิด และเป็นส่วนที่คุณเอาออกได้จริง
ทุกอุปกรณ์ที่สัญญาณผ่านมีต้นทุน กล้อง ตัวแปลงสัญญาณ สวิตเชอร์ สเกลเลอร์ สวิตเชอร์ตัวที่สองที่ส่งภาพเข้าโปรเจกเตอร์ แต่ละตัวถือภาพไว้ชั่วขณะระหว่างทำงานของมัน สายที่มีอุปกรณ์สี่ตัวก็คือดีเลย์สี่ช่วง และไม่มีช่วงไหนเขียนไว้ในที่ที่คุณจะหาเจอได้ง่าย
การส่งแบบไร้สายมีต้นทุนสูงกว่าแบบสาย ตัวส่งวิดีโอไร้สายต้องแบ่งเป็นแพ็กเก็ต ป้องกัน และประกอบกลับ การป้องกันนั้นคือการแลกเปลี่ยนแบบเดียวกับงบดีเลย์ของ SRT ทุกประการ เพียงแต่อุปกรณ์เป็นผู้ตัดสินใจแทนคุณ
การส่งต่อ (relay) มีต้นทุนเท่ากับการเดินทางอีกหนึ่งรอบเต็ม ถ้าสัญญาณของคุณวิ่งจากสถานที่จัดงานไปที่ออฟฟิศ แล้วจากที่นั่นจึงไปยังแพลตฟอร์ม คุณกำลังจ่ายทั้งสองช่วงบวกกับสิ่งที่กล่องตรงกลางทำ เป็นเรื่องปกติที่จะพบว่า "ดีเลย์สตรีม" ที่มีคนบ่น ส่วนใหญ่มาจากทอดหนึ่งที่มีอยู่ด้วยเหตุผลทางประวัติศาสตร์
วิธีหาคือวางนาฬิกาไว้หน้ากล้อง แล้วถ่ายรูปนาฬิกาคู่กับทุกหน้าจอตลอดสาย ทั้งมอนิเตอร์ของกล้อง เอาต์พุตโปรแกรมของสวิตเชอร์ และพรีวิวของเอนโค้ดเดอร์ แต่ละขั้นจะบอกว่าช่วงนั้นกินเวลาไปเท่าไร บ่อยครั้งจะพบว่าอุปกรณ์เพียงตัวเดียวรับผิดชอบดีเลย์ส่วนใหญ่ และการเอามันออกจากเส้นทางทำได้เร็วกว่าและถูกกว่าการเปลี่ยนการตั้งค่าใด ๆ ปลายทาง
เสียงไม่ตรงปากเป็นความผิดพลาดคนละเรื่องเลย
ทีนี้มาดูคำบ่นอีกแบบ ถ้าเสียงกับปากไม่ตรงกัน การเปลี่ยนการตั้งค่าดีเลย์จะไม่ช่วยอะไร เพราะเสียงและภาพเดินทางไปด้วยกัน สตรีมที่แพ็กเกจแล้วทั้งก้อนมาช้าเป็นสิ่งเดียว ซิงก์ไม่ตรงหมายความว่าทั้งสองเหลื่อมกันมาตั้งแต่ตอนมาถึง หรือมีบางอย่างทำให้มันแยกออกจากกัน
เกือบทุกครั้งเรื่องนี้เกิดก่อนเข้าเอนโค้ดเดอร์ เสียงและภาพเดินทางมาถึงเอนโค้ดเดอร์ผ่านอุปกรณ์คนละชุด และอุปกรณ์คนละชุดก็ใช้เวลาไม่เท่ากัน
ปกติภาพจะเป็นฝ่ายที่ช้ากว่า กล้องประมวลผลและปรับขนาด การ์ดแคปเจอร์แปลงสัญญาณ สวิตเชอร์ผสมภาพ แต่ละขั้นกินเวลานิดหน่อย ส่วนเสียงมักมาทางที่สั้นกว่ามาก คือไมโครโฟนต่อตรงเข้าออดิโออินเทอร์เฟซ
วิธีแก้ทั่วไปจึงเป็นการหน่วงเสียง ไม่ใช่การเลื่อนภาพให้เร็วขึ้น เพราะคุณเลื่อนอะไรให้เร็วขึ้นไม่ได้ ภาพมาเร็วที่สุดเท่าที่จะเป็นไปได้แล้ว สวิตเชอร์และออดิโออินเทอร์เฟซเกือบทุกรุ่นจึงมีฟังก์ชันหน่วงเสียงด้วยเหตุผลนี้
วัดก่อนตั้ง ตบมือหนึ่งครั้งหน้ากล้องและไมโครโฟนพร้อมกัน บันทึกเอาต์พุตโปรแกรม แล้วดูว่าเสียงตบมือตกอยู่ตรงไหนในแต่ละแทร็ก คุณจะได้ตัวเลขแทนการเดา และสำหรับชุดอุปกรณ์เดิม ตัวเลขนี้มักคงที่ จึงตั้งเพียงครั้งเดียวก็พอ
เมื่อระยะเหลื่อมโตขึ้นระหว่างไลฟ์
ระยะเหลื่อมคงที่น่ารำคาญแต่แก้ง่าย ระยะเหลื่อมที่เริ่มจากนิดเดียวแล้วอีกหนึ่งชั่วโมงกว้างถึงหนึ่งวินาทีเป็นความผิดพลาดอีกแบบ และการตั้งค่าดีเลย์เอาไม่อยู่
นั่นคือปัญหาเรื่องนาฬิกา อุปกรณ์เสียงและอุปกรณ์ภาพต่างนับเวลาด้วยออสซิลเลเตอร์ของตัวเอง และถ้าเดินไม่ตรงกันแม้เพียงเศษเสี้ยวเล็กจิ๋ว ระยะเหลื่อมก็จะสะสมไปตลอดเวลาที่คุณออนแอร์ ต่างกันแค่หนึ่งในร้อยของหนึ่งเปอร์เซ็นต์ก็เท่ากับหนึ่งในสามวินาทีต่อชั่วโมง
วิธีแก้คือให้ทั้งสองใช้นาฬิกาเดียวกัน ไม่ใช่ไปแก้ที่อาการ ถ้าอุปกรณ์รองรับ ให้ขับเสียงและภาพจากสัญญาณอ้างอิงเดียว ถ้าไม่รองรับ ซึ่งเป็นกรณีปกติของอุปกรณ์ระดับผู้ใช้ทั่วไป ให้เลือกเส้นทางที่เก็บทั้งสองไว้ด้วยกัน เช่น เสียงที่ฝังมากับสัญญาณภาพผ่าน HDMI หรือ SDI หรือรับเสียงด้วยอุปกรณ์ตัวเดียวกับที่รับภาพ แทนที่จะใช้ออดิโออินเทอร์เฟซแยกที่มีคริสตัลของตัวเอง
ถ้าทำไม่ได้ทั้งสองทาง ทางบรรเทาที่ใช้ได้จริงคือทำแต่ละไลฟ์ให้สั้นพอที่ความคลาดเคลื่อนสะสมจะยังต่ำกว่าระดับที่คนจะสังเกตเห็น และจัดซิงก์ใหม่ระหว่างช่วง
ลำดับการวินิจฉัยที่ได้ผล
ตรวจเอาต์พุตโปรแกรมของคุณเองบนเครื่องของคุณก่อน ก่อนทำอย่างอื่นทั้งหมด ถ้าซิงก์ผิดตั้งแต่ตรงนั้นแล้ว แปลว่าไม่มีอะไรปลายทางเป็นต้นเหตุ และไม่มีการตั้งค่าแพลตฟอร์มไหนแก้ได้
ถ้าเอาต์พุตในเครื่องถูกต้อง ให้ตรวจไฟล์บันทึกของสตรีมที่ส่งถึงผู้ชม ซิงก์ที่ถูกในเครื่องแต่ผิดที่ปลายทางเป็นเรื่องที่พบได้น้อยจริง ๆ และควรแจ้งให้เราทราบ เพราะไม่ใช่ปัญหาการตั้งค่า
เมื่อยืนยันแล้วว่าซิงก์ถูกต้องเท่านั้น จึงค่อยไปดูเรื่องดีเลย์ การแก้ดีเลย์ขณะที่เสียงยังไม่ตรงจังหวะ ก็แค่ได้สตรีมที่ผิดแต่เร็วขึ้น
และให้วัดดีเลย์แบบที่ผู้ชมเจอจริง ไม่ใช่จากสถิติของเอนโค้ดเดอร์ ขึ้นนาฬิกาบนจอ ดูไลฟ์บนอุปกรณ์อื่นที่ไม่เกี่ยวข้อง แล้วถ่ายรูปทั้งสองอย่างคู่กัน ตัวเลขนั้นรวมบัฟเฟอร์ของเพลเยอร์ด้วย ซึ่งเป็นส่วนที่เอนโค้ดเดอร์มองไม่เห็นและมักเป็นส่วนที่ใหญ่ที่สุด
คำถามที่พบบ่อย
ทำไมผู้ชมถึงเห็นไลฟ์ช้ากว่าจริง 20 หรือ 30 วินาที
ดีเลย์คือผลรวมของหลายส่วน ได้แก่ บัฟเฟอร์ของเอนโค้ดเดอร์ของคุณ เส้นทางมาถึงเรา การตัดเป็นเซกเมนต์ การส่งต่อ และบัฟเฟอร์ของเพลเยอร์เอง ในการส่งแบบแบ่งเซกเมนต์ สองส่วนหลังคือส่วนที่กินเวลามากที่สุด dcast เผยแพร่เซกเมนต์ยาว 4 วินาที ดังนั้นเพลเยอร์ที่เก็บไว้สามเซกเมนต์ก่อนจะแสดงอะไรก็ตาม ก็ช้ากว่าไลฟ์ไปแล้วสิบสองวินาทีด้วยการตัดสินใจของมันเอง
ตัดดีเลย์ทิ้งให้หมดได้ไหม
ไม่ได้ บางส่วนเป็นเรื่องของฟิสิกส์ และบางส่วนเป็นการป้องกันที่คุณเลือกซื้อมาเอง เช่น งบดีเลย์ของ SRT หรือบัฟเฟอร์ของเพลเยอร์ที่คอยรับแรงกระตุกของเน็ตฝั่งผู้ชม คุณแลกความทนทานกับดีเลย์ได้ทั้งสองทาง แต่จะไม่มีทั้งสองอย่างเลยไม่ได้
ภาพกับเสียงไม่ตรงปากเป็นปัญหาเรื่องดีเลย์หรือเปล่า
ไม่ใช่ ดีเลย์ทำให้เสียงและภาพช้าไปพร้อมกัน ส่วนเสียงไม่ตรงปากหมายความว่าทั้งสองเหลื่อมกันอยู่แล้ว ซึ่งเกือบทุกครั้งเป็นเพราะมันเดินทางมาถึงเอนโค้ดเดอร์ผ่านอุปกรณ์คนละชุดที่ใช้เวลาประมวลผลไม่เท่ากัน ต้องแก้ในสายสัญญาณของคุณเอง ก่อนที่สตรีมจะออกจากมือคุณ
ควรหน่วงเสียง หรือเลื่อนภาพให้เร็วขึ้น
หน่วงเสียง คุณเลื่อนภาพที่ผ่านกล้อง การ์ดแคปเจอร์ และสวิตเชอร์มาแล้วให้เร็วขึ้นไม่ได้ เพราะมันมาเร็วที่สุดเท่าที่จะเป็นไปได้แล้ว วัดระยะเหลื่อมด้วยการตบมือทดสอบ แล้วตั้งค่าหน่วงเท่านั้นให้กับเสียง
ระหว่างไลฟ์ยาว ๆ เสียงกับภาพยิ่งเหลื่อมกันมากขึ้นเรื่อย ๆ เพราะอะไร
เพราะอุปกรณ์เสียงและอุปกรณ์ภาพของคุณนับเวลาด้วยนาฬิกาคนละตัวที่เดินไม่ตรงกันเล็กน้อย และความคลาดเคลื่อนก็สะสมไปเรื่อย ๆ ค่าหน่วงแบบคงที่แก้ระยะเหลื่อมที่โตขึ้นไม่ได้ ถ้าทำได้ให้ใช้สัญญาณนาฬิกาอ้างอิงร่วมกัน หรือให้เสียงฝังมากับสัญญาณภาพแทนการรับเสียงแยกต่างหาก
dcast Team
Professional video streaming experts helping creators succeed.
บทความที่เกี่ยวข้อง
เริ่มต้นธุรกิจวิดีโอของคุณวันนี้
เข้าร่วมกับครีเอเตอร์นับพันที่สร้างรายได้จากคอนเทนต์ด้วย DCAST
เริ่มต้นใช้งานฟรี



