پس از یک سال توسعه، GStreamer 1.22 منتشر شد، مجموعه ای متقابل پلتفرم از اجزا برای ایجاد طیف گسترده ای از برنامه های چند رسانه ای، از پخش کننده های رسانه و مبدل فایل های صوتی/تصویری گرفته تا برنامه های VoIP و سیستم های پخش. کد GStreamer تحت مجوز LGPLv2.1 است. بهطور جداگانه، بهروزرسانیهای مربوط به gst-plugins-base، gst-plugins-good، gst-plugins-bad، gst-plugins-ugly و همچنین gst-libav binding و سرور پخش جریان gst-rtsp-server در حال توسعه هستند. . در سطح API و ABI، نسخه جدید با شاخه 1.0 سازگار است. اسمبلی های باینری به زودی برای اندروید، iOS، macOS و ویندوز آماده می شوند (در لینوکس توصیه می شود از بسته های توزیع استفاده کنید).
پیشرفت های کلیدی در GStreamer 1.22:
- پشتیبانی بهبودیافته از فرمت کدگذاری ویدیوی AV1. قابلیت استفاده از شتاب سخت افزاری برای رمزگذاری و رمزگشایی AV1 از طریق API های VAAPI/VA، AMF، D3D11، NVCODEC، QSV و Intel MediaSDK اضافه شده است. کنترل کننده های RTP جدید برای AV1 اضافه شد. تجزیه و تحلیل بهبود یافته AV1 در کانتینرهای MP4، Matroska و WebM. مجموعه ها شامل عناصری با رمزگذارهای AV1 و رمزگشاهای مبتنی بر کتابخانه های dav1d و rav1e هستند.
- پشتیبانی پیاده سازی شده برای Qt6. عنصر qml6glsink اضافه شد که از Qt6 برای رندر کردن ویدیو در صحنه QML استفاده می کند.
- عناصر gtk4paintablesink و gtkwaylandsink برای رندر با استفاده از GTK4 و Wayland اضافه شده است.
- کلاینتهای جدیدی برای استریم تطبیقی اضافه شدهاند که از پروتکلهای HLS، DASH و MSS (Microsoft Smooth Streaming) پشتیبانی میکنند.
- توانایی ایجاد مجموعههای بریدهشده را فراهم میکند که برای کاهش اندازه بهینه شدهاند.
- پشتیبانی از WebRTC Simulcast و Google Congestion Control اضافه شده است.
- یک افزونه ساده و مستقل برای ارسال از طریق WebRTC ارائه شده است.
- یک بستهبندی کانتینر رسانه MP4 جدید با پشتیبانی از دادههای تکهتکهشده و غیرقطعی اضافه شده است.
- افزونه های جدید برای ذخیره سازی Amazon AWS و خدمات رونویسی صوتی اضافه شده است.
- پیوندهای به روز شده برای زبان Rust. اضافه شدن 19 افزونه، افکت و المان جدید نوشته شده در Rust (gst-plugins-rs). اشاره شده است که 33 درصد از تغییرات در GStreamer جدید در Rust پیاده سازی شده است (تغییرات مربوط به اتصالات و پلاگین ها است) و مجموعه پلاگین gst-plugins-rs یکی از فعال ترین ماژول های GStreamer است. پلاگین های نوشته شده در Rust را می توان در برنامه ها به هر زبانی استفاده کرد و کار با آنها مشابه استفاده از پلاگین ها در C و C++ است.
- افزونههای Rust به عنوان بخشی از بستههای باینری رسمی برای پلتفرمهای Windows و macOS ارائه میشوند (مونتاژ و تحویل برای Linux، Windows و macOS پشتیبانی میشوند).
- یک سرور رسانه ای مبتنی بر WebRTC که به زبان Rust نوشته شده است، پیاده سازی شده است که از WHIP (WebRTC HTTP ingest) و WHEP (WebRTC HTTP خروجی) پشتیبانی می کند.
- عنصر videocolorscale اضافه شده است، که ترکیبی از قابلیتهای تبدیل ویدیو و مقیاسبندی است.
- پشتیبانی بهبود یافته از ویدئو با عمق رنگ بالا.
- پشتیبانی از رویدادهای صفحه لمسی به Navigation API اضافه شد.
- عناصر تصحیح مهر زمان H.264/H.265 برای بازسازی PTS/DTS قبل از بسته بندی ظروف رسانه اضافه شده است.
- در پلتفرم لینوکس، استفاده از DMA برای کار کردن با بافرها هنگام رمزگذاری، رمزگشایی، فیلتر کردن و رندر کردن ویدیو با استفاده از شتاب سخت افزاری بهبود یافته است.
- ادغام با CUDA بهبود یافته است: کتابخانه gst-cuda و عنصر cudaconvertscale اضافه شده است، ادغام با عناصر D3D11 و NVIDIA dGPU NVMM ارائه شده است.
- ادغام با Direct3D11 بهبود یافته است: یک کتابخانه جدید gst-d3d11 اضافه شده است، قابلیت های پلاگین های d3d11screencapture، d3d11videosink، d3d11convert و d3d11compositor گسترش یافته است.
- برای پردازندههای گرافیکی AMD، رمزگذارهای ویدیویی با شتاب سختافزاری جدید در قالبهای H.264 / AVC، H.265 / HEVC و AV1 پیادهسازی شدهاند که با استفاده از AMF (Advanced Media Framework) SDK ساخته شدهاند.
- پلاگین applemedia پشتیبانی از کدگذاری و رمزگشایی ویدیوی H.265/HEVC را اضافه کرده است.
- پشتیبانی از رمزگذاری ویدیوی H.265/HEVC به افزونه androidmedia اضافه شد.
- ویژگی force-live به افزونه های audiomixer، compositor، glvideomixer و d3d11compositor اضافه شده است تا حالت زنده فعال شود.
منبع: opennet.ru