The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Доступен мультимедийный фреймворк GStreamer 1.22.0

24.01.2023 15:01

После года разработки состоялся релиз GStreamer 1.22, кроссплатформенного набора компонентов для создания широкого спектра мультимедиа приложений, от медиаплееров и конвертеров аудио/видео файлов, до VoIP-приложений и систем потокового вещания. Код GStreamer распространяется под лицензией LGPLv2.1. Отдельно развиваются обновления плагинов gst-plugins-base, gst-plugins-good, gst-plugins-bad, gst-plugins-ugly, а также обвязка gst-libav и сервер потокового вещания gst-rtsp-server. На уровне API и ABI новый выпуск обратно совместим с веткой 1.0. Бинарные сборки в скором времени будут подготовлены для Android, iOS, macOS и Windows (в Linux рекомендуется использовать пакеты из дистрибутива).

Ключевые улучшения 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).
  • Реализован написанный на Rust медиасервер на базе WebRTC, поддерживающий WHIP (WebRTC HTTP ingest) и WHEP (WebRTC HTTP egress).
  • Добавлен элемент videocolorscale, сочетающий в себе возможности для конвертации и масштабирования видео.
  • Улучшена поддержка видео с большой глубиной цвета.
  • В API Navigation добавлена поддержка событий от сенсорных экранов.
  • Добавлены элементы коррекции временных меток H.264/H.265 для реконструкции PTS/DTS перед упаковкой медиаконтейнеров.
  • На платформе Linux улучшено применение DMA для совместной работы с буферами при кодировании, декодировании, фильтрации и отрисовке видео с применением аппаратного ускорения.
  • Улучшена интеграция с CUDA: добавлены библиотека gst-cuda и элемент cudaconvertscale, обеспечена интеграция с элементами D3D11 и NVIDIA dGPU NVMM.
  • Улучшена интеграция с Direct3D11: добавлена новая библиотека gst-d3d11, расширены возможности плагинов d3d11screencapture, d3d11videosink, d3d11convert и d3d11compositor.
  • Для GPU AMD реализованы новые аппаратно ускоренные кодировщики видео в форматах H.264 / AVC, H.265 / HEVC и AV1, построенные с использованием SDK AMF (Advanced Media Framework).
  • В плагин applemedia добавлена поддержка кодирования и декодирования видео H.265 / HEVC.
  • В плагин androidmedia добавлена поддержка кодирования видео H.265 / HEVC.
  • В плагины audiomixer, compositor, glvideomixer и d3d11compositor добавлено свойство force-live для принудительного включения live-режима.


  1. Главная ссылка к новости (https://lists.freedesktop.org/...)
  2. OpenNews: В GStreamer реализована возможность поставки плагинов, написанных на Rust
  3. OpenNews: Доступен мультимедийный фреймворк GStreamer 1.20.0
  4. OpenNews: Уязвимости в VLC и GStreamer, способные привести к выполнению кода при обработке контента
  5. OpenNews: Выпуск мультимедийного сервера PipeWire 0.3.35
  6. OpenNews: Выпуск звукового сервера PulseAudio 16.0
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/58537-gstreamer
Ключевые слова: gstreamer
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (50) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, анон (?), 16:19, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Классная штука, на rpi можно стримить свою хату в вк и прочее без всяких ваших этих.
     
     
  • 2.2, Аноним (2), 16:29, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Домашнее видео?
     
  • 2.3, Аноним (3), 16:29, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А в ffmpeg нельзя? Что мне не нраится в саабже, так это отлаживать, почему в нём что-то не работает опять. Например у меня в вайне
     
  • 2.4, Аноним (3), 16:33, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А в ffmpeg нельзя? Что мне не нравится в сабже, так это отлаживать, почему в нём что-то не работает опять. Например у меня в вайне не работают avc видосики и разбирайся как хочешь. Видосики в других форматах зависят от контейнера, и например aac дорожка звука может и работать, а может и нет. Кроме того, в самом gstreamer не работает vaapi и выяснить это можно только экспериментальным путём, отладочные логи не очень информативны и что делать дальше не понятно (но работает nvdec).
     
     
  • 3.19, НяшМяш (ok), 18:00, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С вайном всё очень сложно. Первая рекомендация в таких случаях это накатить протоновские патчи от валвов - они очень много запилили всяких mediafoundation фиксов.

    > не работает vaapi
    > но работает nvdec

    Это взаимоисключающие понятия, поскольку нвидия не запиливала vaapi никогда. Если очень хочется оба, то надо ставить что-то такое https://github.com/elFarto/nvidia-vaapi-driver, старый на базе vdpau уже очень давно практически не работает.

     
     
  • 4.43, mikhailnov (ok), 03:01, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А nvidia-vaapi-driver насколько работоспособный сейчас?
     
     
  • 5.46, НяшМяш (ok), 11:01, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А nvidia-vaapi-driver насколько работоспособный сейчас?

    В последний раз использовал полгода назад с RTX 2060, но тогда в firefox работало всё, кроме большого количества одновременно проигрывающихся AV1 видео - например, в какой-нибудь ленте комментариев на 9gag "гифки" могли зависнуть. Возможно уже пофиксили, но тогда я просто отключил AV1 в браузере.

     
     
  • 6.54, mikhailnov (ok), 17:32, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо
     
  • 5.57, Аноним (3), 15:12, 26/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо, информация устарела. Работает в жырнолисе, с новой версией блоба только с новым режимом direct (разрабы сабжа сказали, что в драйвере поломано через egl). В mpv тоже работает вроде, но я проверил только h264.

    У gstreamer есть собственная поддержка nvdec, которая почему-то выключена в дистрибутивах. Выбор декодеров осуществляется переменной GST_PLUGIN_FEATURE_RANK, надо прописать

    GST_PLUGIN_FEATURE_RANK=nvmpegvideodec:MAX,nvmpeg2videodec:MAX,nvmpeg4videodec:MAX,nvh264sldec:MAX,nvh264dec:MAX,nvjpegdec:MAX,nvh265sldec:MAX,nvh265dec:MAX,nvvp9dec:MAX,avdec_av1:MAX,av1dec:MAX

    и тогда gstreamer воспроизводит файлы через них, как задать vaapi я не знаю.

     
  • 2.5, Попандопала (?), 16:35, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    У стримеров ОБС и всякие Твитч-студии.
     

  • 1.6, Шарп (ok), 16:47, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Обеспечена поставка плагинов на Rust

    Неумолимая поступь.

     
     
  • 2.8, Аноним (8), 17:00, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ибо этот язык безопасен!
     
     
  • 3.25, Аноним (25), 18:34, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Точнее, безопастен.
     
  • 3.33, Аноним (33), 21:36, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    как неуловимый Джо
     
  • 2.17, Аноним (17), 17:52, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А сами плагины написать так и не осилили. Ор дня.
     
     
  • 3.20, НяшМяш (ok), 18:03, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    К счастью, похоже что в команде гстримера нет экспертов опеннета, поэтому плагины на расте существуют (и их не мало): https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs
     
     
  • 4.52, Деанон (?), 16:10, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    просто открыть сишный листинг и переписать без вдумчивости на другой язык любой дypак сможет
     
     
  • 5.55, НяшМяш (ok), 23:59, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ждём ядро линукса от Деанона на расте, фигня ведь вопрос
     
  • 2.31, Аноним (31), 20:43, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всегда нравится когда opennet так лихо негодуют от rust.
    Это всего лишь инструмент, не нравится ни пишите на этом языке.
    От того что вы бухтите ничего не изменится. Только тратите свое и чужое время
     
     
  • 3.35, Аноним (33), 21:41, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так вы ж сами ноете что надо писать всё на хрусте, определитесь уже ноете вы или ноете
     
     
  • 4.41, Аноним (41), 22:30, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –4 +/
    не надо всё писать на "хрусте", тебя например, можно написать на баше
     
  • 2.56, Golangdev (?), 02:27, 26/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Помогите мне понять причину такого хейта Раста.

    Используется почти в каждой первой криптовалюте, в Файрфоксе, Ядре Линукс, в Хроме.

    Думаете вышеперечисленные проекты ошиблись в выборе языка ?

     

  • 1.10, Аноним (10), 17:12, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Qt6 .. GTK4 .. WebRTC .. языка Rust

    Вот это г-но-комбайн! Модно, молодёжно!

     
     
  • 2.14, Иваня (?), 17:36, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чем тебе WebRTC не угодил? Критикуя - предлагай!
     
     
  • 3.30, Аноним (30), 20:08, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я и гона на GTK с QT не понял.
     
     
  • 4.36, Аноним (33), 21:42, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А при чём тут Quick Time?
     
  • 4.40, Аноним (41), 22:28, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слишком новые, слишком "модные", слишком "молодежные" то есть молодые. Надо подождать лет 5-10 и только потом делать их поддержку
     
     
  • 5.49, Аноним (49), 12:18, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Только через эти лета они сменят номер версии.
     
  • 2.37, InuYasha (??), 21:57, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вот, как раз, когда есть фронт-енды подо всё, что нужно, - это большое "хорошо".
     

  • 1.12, Аноним (12), 17:18, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Отмечается, что 33% из изменений в новом GStreamer реализованы на Rust

    Gstreamer написан полностью на С а Rust не имеет никакого отношения к  нему, не вводите людей в заблуждение. Биндинги и плагины на Rust это вообще отдельная тема.

     
     
  • 2.15, nazarpc (ok), 17:37, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Плагины по немногу переписываются, и это ОЧЕНЬ хорошо!
    Намного выше стабильность и меньше сегфолтов (которых я ловил с С плагинами).

    Как тот кто разрабатывал приложения с GStreamer и Rust и даже немного контрибютил в GStreamer плагины на С, могу сказать что я бы не рискнул разрабатывать приложения на C. Там просто бесконечное количество способов выстрелить себе в разные части тела с самыми непредсказуемыми последствиями.
    Логические ошибки Rust биндинги (которые в GStreamer без преувеличения офигенные) решает только частично, а вот работу с памятью практически на 100%.
    Крайне редко приходилось использовать unsafe, в основном временно для создания биндингов того, что только что в master GStreamer-а добавили.

    На Rust GStreamer в ближайшем будущем никто не перепишет (хотя мейнтейнеры были бы только за), а вот новые плагины они рекомендуют писать и сами пишут именно на Rust, ибо так проще и надежнее.

     
     
  • 3.16, Аноним (12), 17:52, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Там просто бесконечное количество способов выстрелить себе в разные части тела

    как в любом приложении где бесконечные выделение/освобождение памяти

    > новые плагины они рекомендуют писать и сами пишут именно на Rust, ибо так проще и надежнее

    по мне так gstreamer идеальный кандидат на переписывание, там все равно без нервов и веществ не разобраться

     
     
  • 4.21, НяшМяш (ok), 18:06, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > как в любом приложении где бесконечные выделение/освобождение памяти

    Не совсем про gstreamer, потому что при работе с мультимедией постоянно дёргать память это гарантированный способ убить производительность, особенно в каком-нибудь аудиопотоке. Выделить память и почистить её недалеко от места выделения проще, чем выделить память один раз - потому что гарантированно про неё забываешь.

     
     
  • 5.22, nazarpc (ok), 18:13, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> как в любом приложении где бесконечные выделение/освобождение памяти
    > Не совсем про gstreamer, потому что при работе с мультимедией постоянно дёргать
    > память это гарантированный способ убить производительность, особенно в каком-нибудь аудиопотоке.
    > Выделить память и почистить её недалеко от места выделения проще, чем
    > выделить память один раз - потому что гарантированно про неё забываешь.

    Да, там много где zero copy, и от этого управлять памятью ещё сложнее. Выделение буферов и освобождение не обязательно рядом, плюс они переиспользуются по возможности. Короче говоря, всё достаточно сложно и в плане именно управления памятью там очень легко накосячить.

     
     
  • 6.23, nazarpc (ok), 18:18, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >>> как в любом приложении где бесконечные выделение/освобождение памяти
    >> Не совсем про gstreamer, потому что при работе с мультимедией постоянно дёргать
    >> память это гарантированный способ убить производительность, особенно в каком-нибудь аудиопотоке.
    >> Выделить память и почистить её недалеко от места выделения проще, чем
    >> выделить память один раз - потому что гарантированно про неё забываешь.
    > Да, там много где zero copy, и от этого управлять памятью ещё
    > сложнее. Выделение буферов и освобождение не обязательно рядом, плюс они переиспользуются
    > по возможности. Короче говоря, всё достаточно сложно и в плане именно
    > управления памятью там очень легко накосячить.

    Rust биндинги как раз позволяют четко понимать в какой буфер можно только смотреть, какой можно модифицировать, а над каким есть полное владение в данном контексте с автоматическим освобождением если его дропнуть. Не знаю кем нужно быть чтобы не видеть в этом ценности при разработке как плагинов, так и приложений.

     
  • 5.24, Аноним (12), 18:21, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Не совсем про gstreamer,

    я бы сказал - в особенности Gstreamer

    > при работе с мультимедией постоянно дёргать память это гарантированный способ убить производительность

    интересно - как вы представляете работу с видео без аллокаторов и экспорта импорта dmabuf между плагинами, хотя я не про это - на этапе инициализации плагинов и разбора GstCaps просто сплошные выделения/освобождения буферов под результаты.

     
     
  • 6.47, НяшМяш (ok), 11:15, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > интересно - как вы представляете работу с видео без аллокаторов и экспорта
    > импорта dmabuf между плагинами, хотя я не про это - на
    > этапе инициализации плагинов и разбора GstCaps просто сплошные выделения/освобождения
    > буферов под результаты.

    На этапе инициализации и выделяется\освобождается всё что надо. А вот при работе в рабочем потоке так делать не рекомендуется. Вообще не знаю GStreamer, но в том же эпловском CoreAudio и CoreVideo используются кольцевые буферы и прочие техники переиспользования существующей памяти для обеспечения высокой производительности и низкой задержки.

     
     
  • 7.51, Аноним (12), 13:24, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    для высокой производительности используется zero copy, кольцевой буфер это или с... большой текст свёрнут, показать
     
  • 4.45, Аноним (-), 08:06, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >по мне так gstreamer идеальный кандидат на переписывание,

    Размечтался.

    >там все равно без нервов и веществ не разобраться

    Лучше занимайся своими быдло-приложениями. Gstreamer не трожь.

     

  • 1.13, Аноним (12), 17:33, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Добавлена возможность использования аппаратного ускорения кодирования и декодирования AV1 через API VAAPI/VA, AMF, D3D11, NVCODEC, QSV и Intel MediaSDK.

    прискорбно что развиваются чужеродные для Linux компоненты а для родного интерфейса (v4l2) плагины в заброшенном состоянии. Хотя тут не разработчики Gstreamer виноваты - производителям железа проще в юзерспейс наколхозить побыстрому чем разрабатывать ядерные API под строгим контролем и длительным временем согласования для принятия в майнстрим.

     
  • 1.26, Аноним (41), 18:47, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    >Обновлены привязки для языка Rust. Добавлено 19 новых плагинов, эффектов и элементов, написанных на Rust (gst-plugins-rs). Отмечается, что 33% из изменений в новом GStreamer реализованы на Rust

    Как же так? Ведь местные клоуны говорили что на rust ничего написать нельзя.
    Понятно что они ничего не могут написать (и не только на rust), но зачем это на всех остальных людей проецировать?

     
     
  • 2.28, Аноним (12), 19:07, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > говорили что на rust ничего написать нельзя

    справедливости ради всё что написано пока на Rust это новые плагины и соотвественно под очень специфичные и редкие задачи, Gstreamer и все основные плагины написаны на С, в тексте новости логическая ошибка

    https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs

    в общем за несколько лет существования проекта плагинов на Rust (лет 8 наверно) на нём пока написана мизерная часть плагинов и ни одним из них мне например не приходилось пользоваться.

     
     
  • 3.39, Аноним (41), 22:22, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >13 May, 2016
    >Initial commit

    Растоманы за 8 лет смогли написать всего несколько штук плагинов, это очень показательно.

     
  • 2.34, Аноним (34), 21:40, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Понятно что они ничего не могут написать (и не только на rust)
    > но зачем это на всех остальных людей проецировать?

    А ты сейчас что делаешь?

     
  • 2.53, Деанон (?), 16:13, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше бы с жабоскрипта на раст переписали или на что-нибудь подобное, но нормальное
     

  • 1.27, Аноним (41), 18:51, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Gstreamer всегда очень плохо работал и ничего с этим не сделать :'(
     
     
  • 2.32, Аноним (32), 21:29, 24/01/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Лет 10 как эта информация устарела.
     

  • 1.29, Аноним (29), 19:51, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Хорошая штука. На винде использую для стриминга в фоне аудио с микрофона в докер контейнер Rhasspy для распознавания голосовых команд.
     
  • 1.38, InuYasha (??), 21:58, 24/01/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати, он больше не падает с пульсой при вытыкании HDMI-кабеля с аудио?
     
     
  • 2.48, НяшМяш (ok), 11:18, 25/01/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С pipewire не наблюдал такого. Оно даже способно автоматически перенести воспроизводящийся в данный момент аудиопоток (источник - strawberry с gstreamer бекендом) на новое устройство, что я в последний наблюдал разве что на маках - даже на виндах успех этого не гарантирован.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру