GStreamer 1.26.7: คุณสมบัติใหม่และการแก้ไขที่สำคัญทั้งหมด

  • การเปิดตัวการบำรุงรักษาพร้อมการแก้ไขที่มุ่งเป้าหมายและไม่มีการเปลี่ยนแปลง API/ABI
  • การปรับปรุงใน RTP/RTSP, คอนเทนเนอร์ (TS/Matroska/FLV) และ GPU (CUDA/D3D12)
  • ปรับแต่งประสิทธิภาพและเวลาแฝงสำหรับการแชร์เธรดและอัตราวิดีโอ
  • โปรแกรมไบนารีสำหรับ Android, iOS, macOS และ Windows จะพร้อมใช้งานเร็วๆ นี้

gstreamer 1.26.7

การมาถึงของ GStreamer ฮิต มาพร้อมกับความรู้สึกที่ขัดเกลา: เป็นรุ่นที่มุ่งเน้นการแก้ไขข้อบกพร่อง ปรับปรุงส่วนต่างๆ และเสริมเสถียรภาพให้กับเฟรมเวิร์กมัลติมีเดียข้ามแพลตฟอร์ม แม้ว่าจะไม่ได้มีการเปลี่ยนแปลงที่สร้างความปั่นป่วน แต่ก็มีการปรับปรุงที่สำคัญหลายประการ ซึ่งช่วยเพิ่มความน่าเชื่อถือในการใช้งานเสียงและวิดีโอในโลกแห่งความเป็นจริง เวอร์ชันนี้ให้ความสำคัญกับองค์ประกอบสำคัญต่างๆ เช่น RTP/RTSP, คอนเทนเนอร์, GPU, คำบรรยาย CEA-608, จังหวะเวลา และเครื่องมือพัฒนา ถือเป็นการก้าวกระโดดที่ปลอดภัยสำหรับผู้ที่ใช้ซีรีส์ 1.26.x อยู่แล้ว และพวกเขาต้องการลดความล่าช้าในการผลิตลง

ทีมงานขอเน้นย้ำว่านี่เป็นการอัปเดตที่แนะนำสำหรับผู้ใช้ทุกคน สาขามั่นคงรวมถึงแอปพลิเคชันที่ทำงานกับสตรีมแบบเรียลไทม์ การแยกสัญญาณของรูปแบบยอดนิยม และไพลน์ไลน์ที่รองรับโดย GPU ของ NVIDIA หรือ Direct3D 12 นอกจากนี้ ยังมีหมายเหตุเชิงปฏิบัติ: โปรแกรมไบนารีสำหรับ Android, iOS, macOS และ Windows จะพร้อมใช้งานเร็วๆ นี้ทำให้ทีมงานข้ามแพลตฟอร์มสามารถเคลื่อนย้ายระหว่างสภาพแวดล้อมได้อย่างราบรื่น

ภาพรวมการเปิดตัว GStreamer 1.26.7

GStreamer 1.26.7 มุ่งเน้นไปที่การแก้ไขข้อบกพร่อง การปรับแต่งค่าความหน่วง และการปรับปรุงความเข้ากันได้ โดยมีการแก้ไขมากมายที่ส่งผลต่อทั้งปลั๊กอินเฉพาะและส่วนประกอบข้ามแพลตฟอร์ม จุดเด่นประกอบด้วยการปรับปรุงโอเวอร์เลย์ CEA-608, การรองรับ CUDA 13.0 toolchain, การแก้ไข D3D12, เพย์โหลดเดอร์/ดีเพย์โหลดเดอร์ใหม่สำหรับเสียงเชิงเส้นใน RTP, การเพิ่มประสิทธิภาพการแยกสัญญาณและการมัลติเพล็กซ์ และการปรับปรุงกลไกการแชร์เธรด เป้าหมายคือการเพิ่มความทนทานโดยไม่ต้องเปลี่ยนแปลง API หรือพฤติกรรมที่คาดหวัง บนสาขาที่มั่นคง 1.26.

  • คำบรรยายและโอเวอร์เลย์: การจัดการหน่วยความจำที่ไม่ใช่ระบบที่ดีขึ้นใน cea608overlay.
  • GPU: การคอมไพล์เคอร์เนลเพื่อรองรับรันไทม์สำหรับ CUDA 13.0 และการแก้ไข D3D12 ในกระบวนการครอบตัดและการดีอินเทอร์เลซ
  • Demux และคอนเทนเนอร์: การปรับปรุงใน คิวทีดีมักซ์ (ช่องเสียงรอบทิศทางและประสิทธิภาพการทำงานด้วย GoPro) การแก้ไขใน mpegtsmux/tsdemux สำหรับ Opus และแก้ไขเมื่อกำหนดแพดที่จุดสิ้นสุดของสตรีมบนมัลติเพลเซอร์หลายตัว
  • เครือข่ายเรียลไทม์: เพย์โหลดเดอร์/ดีเพย์โหลดเดอร์ใหม่สำหรับเสียงเชิงเส้น (L8, L16, L24), RTSP keepalives ในโหมด TCP/interleaved และการแก้ไขหลายรายการใน rtp/rtpbasepay2/rtpamrpay2
  • ประสิทธิภาพและความหน่วง: การปรับปรุงใน กระทู้แชร์, อัตราวิดีโอ และการจัดการข้อมูลประทับเวลา
  • การพัฒนาและการสร้าง: แก้ไขคำอธิบายประกอบ gobject-introspection และอัปเดต Meson เป็น 1.9.0 บน Cerbero สำหรับความเข้ากันได้กับ Xcode 26 มีเสถียรภาพมากขึ้นและการรั่วไหลของหน่วยความจำน้อยลง.

รายละเอียดการแก้ไขและการปรับปรุงใน GStreamer 1.26.7

คำบรรยายและโอเวอร์เลย์ CEA-608

ชิ้น cea608overlay ได้รับการปรับปรุงที่สำคัญ: ขณะนี้สามารถจัดการบัฟเฟอร์ที่มาจากหน่วยความจำที่ไม่ได้ถูกจัดการโดยระบบได้ดีขึ้น ซึ่งมักเกิดขึ้นเมื่อรวมตัวเร่งความเร็วหรือแหล่งข้อมูลภายนอก ช่วยลดข้อผิดพลาดเล็กๆ น้อยๆ เมื่อผสมคำบรรยายกับวิดีโอในไพพ์ไลน์ที่ซับซ้อน ผลลัพธ์ที่ได้คือโอเวอร์เลย์ที่คาดเดาได้และแข็งแกร่งยิ่งขึ้น เมื่อแหล่งที่มาของข้อมูลไม่ใช่ RAM แบบดั้งเดิม

GPU: CUDA และ Direct3D 12

ในส่วนของ NVIDIA GStreamer 1.26.7 ได้แก้ไขการคอมไพล์เคอร์เนลแบบรันไทม์ด้วย CUDA 13.0 การเปลี่ยนแปลงนี้มีความสำคัญอย่างยิ่งสำหรับผู้ที่สร้างเคอร์เนลแบบไดนามิกหรือตัวกรองแบบต่อเนื่องที่ขึ้นอยู่กับ การคอมไพล์รันไทม์. หลีกเลี่ยงการเกิดข้อผิดพลาดและความล้มเหลวในสภาพแวดล้อมที่ได้เปลี่ยนไปใช้เครื่องมือ CUDA รุ่นล่าสุดแล้ว.

สำหรับ Windows แบ็กเอนด์ D3D12 ได้รับการปรับปรุงในสองด้าน ได้แก่ การรองรับเมตาดาต้าแบบครอบตัดในตัวแปลง และการจัดการแบบพาสทรูในดีอินเตอร์เลซเซอร์ ในทางปฏิบัติ ส่งผลให้การครอบตัดมีประสิทธิภาพทั่วทั้งเชน และดีอินเตอร์เลซที่ไม่รบกวนการทำงานเมื่อไม่ควรรบกวน ช่วยหลีกเลี่ยงต้นทุนการประมวลผลที่ไม่จำเป็น ปรับปรุงความสอดคล้องของภาพและประสิทธิภาพใน Direct3D 12 pipelines.

แหล่งที่มาและการซิงโครไนซ์: fallbacksrc และ inter

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

องค์ประกอบ ฝัง เพิ่มคุณสมบัติเพื่อปรับแต่งส่วนประกอบย่อยภายในให้ละเอียดยิ่งขึ้น สำหรับนักพัฒนาที่ต้องการเพิ่มประสิทธิภาพการสื่อสารระหว่างองค์ประกอบต่างๆ ผ่านลิงก์ภายในไพพ์ไลน์ การเพิ่มรายละเอียดนี้จะช่วยให้ปรับแต่งพฤติกรรมการทำงานได้อย่างละเอียดโดยไม่ต้องเจาะลึก การควบคุมเวลาและการบัฟเฟอร์ที่ละเอียดยิ่งขึ้น ในโทโพโลยีขั้นสูง

การแยกสัญญาณแบบมัลติเพล็กซ์และคอนเทนเนอร์

ในโลกของ MPEG-TS mpegtsmux y tsdemux พวกเขาแก้ไขแง่มุมต่าง ๆ ที่เกี่ยวข้องกับเสียง Opus ซึ่งแม้จะไม่ใช่โคเดก TS แบบคลาสสิกที่สุด แต่ก็ช่วยปรับปรุงประสิทธิภาพในสตรีมสมัยใหม่ ช่วยลดปัญหาสิ่งแปลกปลอม การดีซิงโครไนซ์ และการตีความสตรีมที่ไม่เสถียร ปรับปรุงการทำงานร่วมกันของ Opus ภายใน TS.

มัลติเพล็กเซอร์หลายตัว เช่น มาโตรสกามักซ์, ทีเอสเอ็มเอ็กซ์, ฟลวีมักซ์ y ซีเอ608มักซ์, พวกเขาจะแก้ไขการเลือกแผ่นที่ดีที่สุดเมื่อเกิดปัญหา EOS (สิ้นสุดสตรีม) การแก้ไขประเภทนี้มีความสำคัญอย่างยิ่งต่อการปิดไฟล์หรือสตรีมอย่างเรียบร้อย หลีกเลี่ยงส่วนหัวที่ไม่สอดคล้องหรือตัวอย่างที่ไม่สมบูรณ์ การปิดการไหลที่สะอาดขึ้นและไฟล์สุดท้ายที่ถูกต้อง.

RTP/RTSP: เสียงเชิงเส้น, การติดตามและการกำหนดเวลา

สแต็ก RTP มาพร้อมเพย์โหลดเดอร์และดีเพย์โหลดเดอร์สำหรับเสียงเชิงเส้น L8, L16 และ L24 ซึ่งเป็นรูปแบบที่พบได้บ่อยในสภาพแวดล้อมระดับมืออาชีพที่ความหน่วงและความเที่ยงตรงเป็นสิ่งสำคัญ รูปแบบเหล่านี้ช่วยเพิ่มความเข้ากันได้โดยตรงโดยไม่จำเป็นต้องผ่านการแปลงสัญญาณขั้นกลาง ความยืดหยุ่นมากขึ้นสำหรับการสตรีมเสียงแบบไม่บีบอัด.

rtspsrc ขณะนี้สามารถส่ง keepalives ในโหมด TCP/interleaved เพื่อลดการตัดการเชื่อมต่ออันเนื่องมาจากการหมดเวลาเมื่อมีพร็อกซี ไฟร์วอลล์ หรือเครือข่ายที่มีแนวโน้มที่จะหยุดการเชื่อมต่อที่ไม่ได้ใช้งานชั่วคราว ในสภาพแวดล้อมการตรวจสอบหรือการสนับสนุนระยะไกล มาตรการนี้มีความจำเป็นอย่างยิ่ง เซสชัน RTSP ที่เสถียรยิ่งขึ้นบนเครือข่ายจริง.

En rtpamrpay2 ด้านที่เกี่ยวข้องกับเครื่องหมายคุณภาพเฟรมได้รับการแก้ไขและใน rtpbasepay2 PTS สุดท้ายจะถูกนำมาใช้ซ้ำทุกครั้งที่ทำได้ ซึ่งเป็นวิธีแก้ปัญหาเชิงปฏิบัติเพื่อหลีกเลี่ยงปัญหาที่รายงานเกี่ยวกับตัวเข้ารหัส NVIDIA Jetson AV1 แม้จะดูเหมือนเป็นรายละเอียดเล็กๆ น้อยๆ แต่ส่งผลกระทบโดยตรงต่อความต่อเนื่องของสตรีมตามเวลา ความสั่นไหวน้อยลงและค่าประทับเวลามีความสม่ำเสมอมากขึ้น.

เวลาและอัตราเฟรม

องค์ประกอบ อัตราวิดีโอ แก้ไขข้อโต้แย้งที่อาจเกิดเหตุการณ์เมื่อระยะเวลาบัฟเฟอร์ที่ไม่ทราบค่าในสตรีมอัตราเฟรมแปรผัน เงื่อนไขเหล่านี้ซึ่งเกิดขึ้นกับกล้องและแหล่งที่มาที่ "ไม่สม่ำเสมอ" ได้รับการจัดการที่ดีขึ้นแล้ว ความทนทานที่มากขึ้นต่ออัตราเฟรมที่แปรผันโดยไม่เกิดการขัดข้อง.

ประสิทธิภาพ: เธรดแชร์และเวลาแฝง

ระบบย่อย กระทู้แชร์ ได้รับการปรับปรุงหลายประการเพื่อมุ่งเน้นที่ความหน่วงและความเสถียร การแบ่งปันเธรดระหว่างองค์ประกอบต่างๆ จะช่วยลดค่าใช้จ่าย แต่จำเป็นต้องปรับแต่งสมดุลอย่างละเอียดเพื่อหลีกเลี่ยงปัญหาคอขวด การเปลี่ยนแปลงนี้รวมถึงการปรับแต่งสมดุลนี้อย่างละเอียด ซึ่งมีประโยชน์ที่เห็นได้ชัดโดยเฉพาะอย่างยิ่งในไปป์ไลน์ที่ซับซ้อนและมีความหน่วงต่ำ ค่าใช้จ่ายน้อยลงและการตอบสนองแบบเรียลไทม์ที่รวดเร็วยิ่งขึ้น.

การทำงานร่วมกันและบัฟเฟอร์ขนาดใหญ่: unixfd

การสนับสนุน ยูนิกซ์เอฟดี ขณะนี้รองรับบัฟเฟอร์ที่มีเพย์โหลดขนาดใหญ่ การสนับสนุนนี้มีประโยชน์เมื่อเชื่อมต่อกระบวนการต่างๆ ผ่านตัวอธิบายไฟล์ ซึ่งเป็นเรื่องปกติในสถาปัตยกรรมแบบหลายกระบวนการ หรือเมื่อส่งเฟรมระหว่างส่วนประกอบเฉพาะทาง การเคลื่อนย้ายข้อมูลขนาดใหญ่โดยไม่หยุดชะงัก.

บริการแก้ไขและใส่คำอธิบายประกอบ

ในบริการแก้ไขนั้นได้ดำเนินการไปแล้ว ไทม์ไลน์ GES เคารพการตัดสินใจในการทิ้งสัญญาณ SELECT_ELEMENT_TRACKการแก้ไขเส้นทางที่ทำให้เกิดพฤติกรรมที่ไม่คาดคิดและการรั่วไหลของหน่วยความจำ การปรับแต่งนี้ช่วยให้สามารถแก้ไขแบบไม่เชิงเส้นได้แม่นยำยิ่งขึ้น หลีกเลี่ยง "ภาพซ้อน" จากองค์ประกอบที่ถูกยกเลิกการจัดสรร ไทม์ไลน์ที่สอดคล้องและปราศจากการรั่วไหลมากขึ้น.

นอกจากนี้ยังมีการขัดโน้ตอีกด้วย gobject- วิปัสสนาซึ่งเป็นพื้นฐานสำหรับการสร้างการเชื่อมโยงกับหลายภาษา ด้วยคำอธิบายประกอบที่แม่นยำยิ่งขึ้น การเชื่อมโยงจึงแม่นยำยิ่งขึ้น ช่วยลดความประหลาดใจเมื่อพัฒนาใน Python, JavaScript หรือภาษาอื่นๆ การผูกมัดที่เชื่อถือได้มากขึ้นด้วยการทบทวนตนเองที่อธิบายได้ดีขึ้น.

การก่อสร้างและเครื่องมือ: เซอร์เบอรัสและเมสัน

ระบบสร้าง Cerbero อัปเดต Meson เป็น 1.9.0 ช่วยให้เข้ากันได้กับ Xcode 26 ซึ่งถือเป็นกุญแจสำคัญในการสร้างระบบนิเวศ SDK และไฟล์ไบนารี ดังนั้นการอัปเดตจะช่วยปลดล็อกการสร้างที่ทันสมัยบน macOS สภาพแวดล้อมการสร้างที่ทันสมัย ​​ลดแรงเสียดทานใน CI/CD.

GStreamer 1.26.7 อัปเดตและไบนารีพร้อมใช้งานแล้ว

ทีมงานประกาศว่าไฟล์ไบนารีสำหรับ Android, iOS, macOS และ Windows จะพร้อมใช้งาน "เร็วๆ นี้" ซึ่งช่วยลดความยุ่งยากในการทดสอบข้ามแพลตฟอร์มและการปรับใช้ เนื่องจากไม่มีการเปลี่ยนแปลง API/ABI และเวอร์ชัน 1.x มีเสถียรภาพ จึงเหมาะสมที่จะอัปเดตแม้ในรอบการเปิดตัวที่ค่อนข้างจำกัด การขยับขึ้นไปที่ 1.26.7 ถือเป็นการซื้อขายที่มีความเสี่ยงต่ำ.

หากคุณกำลังใช้งานไปป์ไลน์ที่มีความละเอียดอ่อน (เช่น ฮาร์ดแวร์ NVIDIA Jetson หรือกล้อง IP ผ่าน RTSP) การตรวจสอบความถูกต้องภายใน (in-place) ถือเป็นความคิดที่ดี โดยเฉพาะอย่างยิ่งสำหรับการเปลี่ยนแปลงเวลา (การใช้ PTS ซ้ำ) และการรักษาสถานะการใช้งาน (keepalive) อย่างไรก็ตาม เป้าหมายที่ชัดเจนของการเปิดตัวนี้คือการกำจัดบั๊กโดยไม่ต้องแก้ไขพฤติกรรมตามสัญญา ทดสอบและปรับใช้ด้วยความมั่นใจหลังจากรอบ QA.

แนวปฏิบัติที่ดีและข้อควรทราบทางกฎหมาย

เมื่อเผยแพร่ไฟล์ไบนารีหรือเอกสารประกอบ โปรดคำนึงถึงข้อควรพิจารณาเกี่ยวกับเครื่องหมายการค้าโดยทั่วไป: ตามที่ระบุไว้ในแหล่งข้อมูลที่ได้ศึกษา ชื่อและโลโก้ Arch Linux เป็นเครื่องหมายการค้าที่ได้รับการยอมรับ และการใช้เครื่องหมายการค้า Linux® อยู่ภายใต้ใบอนุญาตย่อยจาก LMI ซึ่งเป็นผู้รับใบอนุญาตแต่เพียงผู้เดียวของ Linus Torvalds สำหรับ GStreamer ใบอนุญาต LGPL และความเสถียรของ API/ABI ของซีรีส์ 1.x ช่วยให้การปรับใช้ในผลิตภัณฑ์เชิงพาณิชย์และผลิตภัณฑ์ฟรีเป็นไปได้สะดวกยิ่งขึ้น การปฏิบัติตามใบอนุญาตและเครื่องหมายการค้าจะช่วยหลีกเลี่ยงปัญหาในภายหลัง.

สิ่งหนึ่งที่ชัดเจนหลังจากตรวจสอบ GStreamer 1.26.7 คือ การหยุดการบำรุงรักษาครั้งใหญ่ที่กระทบกับส่วนประกอบสำคัญโดยไม่ทำให้ใครหลุดจากเส้นทาง โดยมุ่งเน้นเป็นพิเศษที่ความเสถียรของเครือข่าย คอนเทนเนอร์ และการเร่งความเร็วของ GPU สำหรับโปรเจกต์ส่วนใหญ่ที่ใช้ 1.26 การก้าวข้ามขีดจำกัดจะทำให้พบบั๊กน้อยลง มีขั้นตอนการทำงานที่สม่ำเสมอมากขึ้น และรากฐานที่พร้อมรับมือกับสิ่งที่จะเกิดขึ้นต่อไปได้ดีขึ้น ทั้งหมดนี้มาพร้อมกับความอุ่นใจจากสาขาที่เสถียรซึ่งเคารพ API/ABI และยังคงรักษาระบบนิเวศของเครื่องมือและการคอมไพล์ไว้ได้ รุ่นที่ออกแบบมาเพื่อให้ทำงานได้ดีขึ้นในวันนี้และไปได้ไกลกว่าในวันพรุ่งนี้.

จีสตรีมเมอร์ 1.26.6
บทความที่เกี่ยวข้อง:
GStreamer 1.26.6 มาพร้อมกับการปรับปรุงประสิทธิภาพ โคเดกใหม่ และการแก้ไขหลายรายการ