Gstreamer windows как пользоваться

Обновлено: 04.07.2024

Добавьте C: \ gstreamer-sdk \ 0.10 \ x86 \ include \ gstreamer-0.10 в каталог включения проекта

Добавьте C: \ gstreamer-sdk \ 0.10 \ x86 \ include \ glib-2.0 в каталоги проекта include

На данный момент это кажется тупиком, так как на ПК нет файла glibconfig.h.

Был ли какой-то шаг пропущен в документах gstreamer?

постскриптум я вижу похожий вопрос , но принятый ответ кажется мертвой ссылкой.

Решение

(1) Установите комплект для разработки драйверов Windows

Другие решения

Этот вопрос был опубликован в 2014 году. Однако для всех, кому требуется установить Gstreamer в Visual Studio, я объясняю, как вы настраиваете свою библиотеку в Windows.

Вам нужно скачать и установить как установщики для разработчиков, так и для не-разработчиков.

Например, для 1.14 это последняя версия,

Вы установите и настроите их в одном каталоге, например C: \ gstreamer.
(Полагаю, gstreamer автоматически добавляет свой / bin в среду Path. Если не просто спросить его.)

После этого вы откроете свою Visual Studio.
Создайте свой проект C ++.
Создайте свой файл main.cpp.
Щелкните правой кнопкой мыши по вашему проекту и выберите свойства.

Нам нужно сделать 3 шага.

1) Включите необходимые пути к каталогам.
2) Определите, где находится .lib пути.
3) Укажите, какие .libs вы хотите использовать.

После нажатия свойства

C / C ++ -> Дополнительные каталоги включения -> определить пути включения
такие как

C: \ Gstreamer \ 1.0 \ x86_64 \ Lib \ бойкий-2.0 \ включает в себя: C: \ Gstreamer \ 1.0 \ x86_64 \ Include \ GStreamer-1,0; C: \ Gstreamer \ 1.0 \ x86_64 \ включать \ краснобайствующего-2.0 \; C: \ GStreamer \ 1.0 \ x86_64 \ \ включает в себя бойкий-2.0 \ бойких;% (AdditionalIncludeDirectories)

Linker -> General -> Добавление каталогов библиотеки -> укажите путь к директории lib, например:

C: \ Gstreamer \ 1.0 \ x86_64 \ Lib;% (AdditionalLibraryDirectories)

Линкер -> Ввод -> Дополнительные зависимости -> Напишите свои .lib файлы, которые вы хотите использовать, такие как

Вопрос: Отлично, я установил GStreamer. Что делать дальше?

Ответ: В первую очередь убедитесь в том, что у вас в распоряжении имеется работоспособная копия реестра и вы имеете возможность ознакомления с параметрами элементов, введя команду: Теперь настало время проверить несколько вещей. Начните с использования приложения gst-launch совместно с несколькими плагинами, которые должны быть установлены в любом случае: fakesrc и fakesink. Они не выполняют никакой полезной работы помимо передачи пустых буферов данных. Введите следующую команду в терминале:

(Для ясности некоторые части выводимой информации были удалены) В том случае, если была выведена аналогичная информация, фреймворк GStreamer функционирует корректно.

В: Сможет ли моя система выводить звук посредством фреймворка GStreamer?

  • pulsesink предназначен для вывода аудиоданных с помощью звукового сервера Pulseaudio
  • osssink предназначен для вывода аудиоданных с помощью интерфейса OSS
  • esdsink предназначен для вывода аудиоданных с помощью звукового сервера ESound
  • alsasink предназначен для вывода аудиоданных с помощью интерфейса ALSA
  • alsaspdifsink предназначен для вывода аудиоданных с помощью интерфейса ALSA через цифровой выход S/PDIF
  • jackaudiosink предназначен для вывода аудиоданных с помощью звукового сервера JACK
В первую очередь вы должны использовать приложение gst-inspect-1.0, передав название элемента для вывода данных в качестве его аргумента, для того чтобы убедиться в корректности установки соответствующего плагина. Например, в том случае, если вы хотите использовать звуковой сервер Pulseaudio, вы должны выполнить команду:

и убедиться в том, что в результате выводится набор значений свойств соответствующего плагина.

После этого вы можете попытаться проиграть синусоидальный сигнал с помощью команды:

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

В случае использования окружения рабочего стола GNOME вы можете настроить параметры вывода звука большинства приложений, использовав команду:

причем соответствующая утилита может быть вызвана также из главного меню (Приложения -> Настройки -> Выбор мультимедийных систем). В окружении рабочего стола KDE не предусмотрено стандартных средств для установки параметров вывода аудиоданных всех приложений; однако, такие приложения, как Amarok позволяют настроить параметры вывода аудиоданных с помощью своих диалогов настроек.

В: Как я могу узнать о том, какие плагины фреймворка GStreamer установлены в моей системе?

О: Для этого вам придется использовать утилиту с интерфейсом командной строки gst-inspect, которая содержится в стандартном комплекте поставки фреймворка GStreamer. При вызове этой утилиты без аргументов, будет выведен список установленных плагинов. Для того, чтобы получить информацию об определенном плагине, следует передать его название в качестве аргумента. Например, вызов

позволит получить информацию о плагине с названием "volume".

В: Куда я должен сообщать об обнаруженных ошибках?

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

В том случае, если у вас появились проблемы с приложением, которое прекращает свою работу из-за ошибок сегментирования, вам стоит предоставить необходимую информацию, выводимую отладчиком gdb. Обратитесь к ответу на вопрос: "Приложение на основе GStreamer прекращает работу из-за ошибки сегментирования. Что мне стоит сделать в этом случае?"

В: Как пользоваться интерфейсом командной строки фреймворка GStreamer?

О: Вы можете получить доступ к интерфейсу командной строки фреймворка GStreamer, используя команду gst-launch. Для декодирования файла формата mp3 и вывода аудиоданных с помощью звукового сервера Pulseaudio вы можете использовать команду:

Большее количество примеров приведено на странице руководства для утилиты gst-launch.

Для автоматического подбора подходящего кодека в рамках конвейера вы можете использовать команду: Мы также реализовали простой плагин для проигрывания мультимедийных потоков, который выполнит большую часть необходимых операций за вас. Этот плагин имеет название playbin. Попробуйте выполнить следующую команду:

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

Speech SDK и Speech CLI могут принимать сжатые аудиоформаты с помощью GStreamer. GStreamer распаковывает звук перед его отправкой по сети в Службу "Речь" в виде необработанного PCM.

Установка Гстреамер в Linux

Установка Гстреамер на Windows

дополнительные сведения см. в разделе Windows инструкции по установке.

Использование Гстреамер в Android

Дополнительные сведения о создании libgstreamer_android см. на вкладке Java выше.

Версия пакета SDK для службы "Речь", необходимая для сжатых входных аудиоданных

  • Для RHEL 8 и CentOS 8 требуется пакет SDK для службы "Речь" версии 1.10.0 или более поздней
  • Для Windows требуется пакет SDK для распознавания речи версии 1.11.0 или более поздней.
  • пакет SDK для распознавания речи версии 1.16.0 или более поздней для последней версии гстреамер на Windows и Android.

По умолчанию используется формат потоковой передачи звука WAV (16 или 8 кГц, 16 бит, моно PCM). Помимо WAV/PCM, GStreamer также поддерживает перечисленные ниже сжатые форматы входных данных.

  • MP3
  • OPUS/OGG
  • FLAC
  • ALAW в контейнере WAV
  • MULAW в контейнере WAV
  • ANY (для сценария, в котором формат мультимедиа неизвестен).

Для работы со сжатым аудио требуется GStreamer

Обработка сжатого аудио-сигнала реализуется с помощью GStreamer. В соответствии с требованиями лицензирования двоичные файлы GStreamer не компилируются и не связываются с пакетом SDK службы "Речь". Разработчикам необходимо установить несколько зависимостей и подключаемых модулей, как описано в статье Установка в Windows или Установка в Linux. Двоичные файлы GStreamer должны находиться в системной папке, чтобы для пакета SDK службы "Речь" загружались двоичные файлы во время выполнения. Например, если для пакета SDK службы "Речь" в Windows удается найти libgstreamer-1.0-0.dll или gstreamer-1.0-0.dll во время выполнения, значит двоичные файлы GStreamer находятся в системной папке.

Обработка сжатого аудио-сигнала реализуется с помощью GStreamer. В соответствии с требованиями лицензирования двоичные файлы GStreamer не компилируются и не связываются с пакетом SDK службы "Речь". Разработчикам необходимо установить несколько зависимостей и подключаемых модулей.

Сведения об обязательной общей настройке в Linux см. в статье с требованиями к системе и инструкциями по установке.

  • В RHEL/CentOS 7 и RHEL/CentOS 8 в случае использования какого-либо сжатого формата потребуется установить дополнительные подключаемые модули GStreamer, если подключаемый модуль формата потокового мультимедиа отсутствует в приведенных выше установленных подключаемых модулях.

Обработка сжатого аудио-сигнала реализуется с помощью GStreamer. В соответствии с требованиями лицензирования двоичные файлы GStreamer не компилируются и не связываются с пакетом SDK службы "Речь". Вместо этого вам нужно использовать готовые двоичные файлы для Android. Чтобы скачать готовые библиотеки, см. статью об установке для разработки в Android.

libgstreamer_android.so является обязательным. Убедитесь, что все подключаемые модули GStreamer (из файла Android.mk ниже) связаны в файле libgstreamer_android.so . При использовании последнего пакета SDK для распознавания речи (1,16 и выше) с Гстреамер версии 1.18.3 libc++_shared.so также требуется присутствие в Android NDK.

Примеры файлов Android.mk и Application.mk приведены ниже. Выполните эти шаги, чтобы создать общий объект gstreamer : libgstreamer_android.so .

Вы можете выполнить сборку libgstreamer_android.so с помощью следующей команды в Ubuntu 18,04 или 20,04. Следующие командные строки были протестированы только с GStreamer Android версии 1.14.4 с Android NDK b16b.

После сборки общего объекта ( libgstreamer_android.so ) разработчику приложений необходимо поместить его в приложение Android, чтобы этот объект мог быть загружен пакетом SDK службы "Речь".

Обработка сжатого аудио-сигнала реализуется с помощью GStreamer. В соответствии с требованиями лицензирования двоичные файлы GStreamer не компилируются и не связываются с пакетом SDK службы "Речь". Разработчикам необходимо установить несколько зависимостей и подключаемых модулей, как описано в статье Установка в Windows или Установка в Linux. Двоичные файлы GStreamer должны находиться в системной папке, чтобы для пакета SDK службы "Речь" загружались двоичные файлы во время выполнения. Например, если для пакета SDK службы "Речь" в Windows удается найти libgstreamer-1.0-0.dll во время выполнения, значит двоичные файлы GStreamer находятся в системной папке.

Пакет SDK для распознавания речи может использовать гстреамер для обработки сжатого звука. Однако по соображениям лицензирования двоичные файлы Гстреамер не компилируются и не связываются с пакетом SDK для распознавания речи. Разработчикам необходимо установить несколько зависимостей и подключаемых модулей, см. раздел Установка в Linux. Язык Go поддерживается только в речевом пакете SDK на платформе Linux. Ознакомьтесь с речевым пакетом SDK для Go , чтобы приступить к работе с Microsoft Speech SDK в Go.

Пример кода, использующего входные аудиоданные, сжатые кодеком

Чтобы настроить пакет SDK службы "Речь" для приема сжатых аудио-данных, создайте класс PullAudioInputStream или PushAudioInputStream . Затем создайте объект AudioConfig из экземпляра класса потока данных, указав формат сжатия этого потока. Соответствующие примеры фрагментов кода см. в статье об API входного потока аудио для пакета SDK службы "Речь".

Предположим, что имеется класс входного потока с именем pullStream и используется формат сжатия OPUS/OGG. Тогда код может выглядеть следующим образом:

Чтобы настроить пакет SDK службы "Речь" для приема сжатых аудио-данных, создайте класс PullAudioInputStream или PushAudioInputStream . Затем нужно создать объект AudioConfig из экземпляра класса потока данных, указав формат сжатия этого потока. Соответствующий пример кода можно найти в примерах из пакета SDK для службы "Речь".

Предположим, что имеется класс входного потока с именем pushStream и используется формат сжатия OPUS/OGG. Тогда код может выглядеть следующим образом:

Чтобы настроить пакет SDK службы "Речь" для приема сжатых аудиоданных, следует создать класс PullAudioInputStream или PushAudioInputStream . Затем нужно создать объект AudioConfig из экземпляра класса потока данных, указав формат сжатия этого потока. Соответствующий пример кода можно найти в примерах из пакета SDK для службы "Речь".

Предположим, что имеется класс входного потока с именем pullStream и используется формат сжатия OPUS/OGG. Тогда код может выглядеть следующим образом:

Чтобы настроить пакет SDK службы "Речь" для приема сжатых аудиоданных, следует создать класс PullAudioInputStream или PushAudioInputStream . Затем создайте объект AudioConfig из экземпляра класса потока данных, указав формат сжатия этого потока.

Предположим, что вы используете PullStream для файла MP3 . Тогда код может выглядеть следующим образом:

Чтобы настроить речевой пакет SDK для приема сжатого аудио-сигнала, создайте PullAudioInputStream или PushAudioInputStream . Затем создайте объект AudioConfig из экземпляра класса потока данных, указав формат сжатия этого потока.

В следующем примере предполагается, что ваш вариант использования предназначен для использования в PushStream сжатом файле.

Знакомство с GStreamer: Устройства вывода

2013-11-28 в 11:51, admin , рубрики: gstreamer, мультимедиа, разработка, разработка программного обеспечения, метки: gstreamer, мультимедиа, разработка программного обеспечения

И снова здравствуй, читатель, которому интересен GStreamer! Сегодня мы поговорим про устройства вывода (sink) различных медиаданных, напишем примитивный плеер для прослушивания радио и записи потока в файл, и узнаем много нового.
Устройство вывода (sink) — это элемент для вывода сигнала куда-либо, будь то звуковая карта, файл, видеокарта или сетевой интерфейс. По своей сути, устройство вывода — это полная противоположность источника данных, и в отличие от источников данных, устройства вывода имеют только один pad — sink.
Рассмотрим устройства вывода подробнее.

Поехали

1. fakesink

Данное устройство по своему смыслу аналогично fakesrc — оно ничего не делает. fakesink используется для вывода сигнала «в пустоту».
Честно говоря, я сам не могу придумать, где его можно использовать, посему особой полезности в данном устройстве я не нахожу.
Пример использования:

2. fdsink

Устройство fdsink используется для вывода потока в файловый дескриптор, оно, как и fdsrc, имеет только один параметр — fd, который должен содержать номер файлового дескриптора. По-умолчанию выводит поток в STDOUT. Естественно, пользы от данного элемента мало, и применять его в реальных проектах особого смысла нет.
Пример использования:

3. alsasink, pulsesink, oss4sink/osssink, jackaudiosink, autoaudiosink

Эти элементы используются для вывода потока на звуковую карту посредством использования необходимой аудио-подсистемы. Из параметров можно отметить только device — он должен содержать в себе идентификатор звуковой карты, на которую в свою очередь будет выведен поток. Из вышеперечисленного списка модулей только autoaudiosink стоит в стороне и обладает одной особенностью — он автоматически выбирает, куда и через какую звуковую подсистему выводить поток, поэтому он не имеет параметра device.
Примеры использования:

4. filesink

Как вы, наверное, уже догадались, данное устройство используется для вывода потока в файл. Его можно использовать для разных целей, например: записывать радиопоток, записывать видеопоток с web-камеры, а также аудиопоток со звуковой карты. Ко всему прочему, данное устройство просто необходимо в случае использования GStreamer как инструмента для конвертации файлов.
Подробно рассматривать свойства данного элемента мы не будем, т. к. они аналогичны свойствам элемента filesrc, с которым мы познакомились в прошлой статье. Одно отличие — у filesink имеется параметр append. Параметр append используется для дописывания потока в конец существующего файла вместо перезаписи его с начала.
Пример использования:

Данный пример иллюстрирует создание фотографии первым устройством, поддерживающим v4l2, и последующее сохранение снимка в /tmp/capture1.jpg.

5. multifilesink

Элемент multifilesink — полная противоположность элементу multifilesrc, с которым мы познакомились в прошлой статье, и используется он для вывода потока в разные файлы. Параметры данного элемента аналогичны параметрам multifilesrc, поэтому на них мы останавливаться не будем.
Пример использования:

Данный пример иллюстрирует создание 10 фотографий и сохранение их в файлы capture0.jpg-capture9.jpg.

6. giosink

И этот элемент является полной противоположностью элементу giosrc — он используется для вывода потока в файл через GIO. Как и giosrc, giosink имеет параметр location, содержащий путь к файлу, в который необходимо записать поток.
Пример использования:

7. ximagesink и xvimagesink

Данные элементы используются для вывода видеосигнала посредством X-сервера. Эти элементы могут использоваться как для просмотра видео «в консоли», так и для реализации вывода видео в приложениях. Разница между элементами небольшая, но есть, и она заключается в двух моментах — ximagesink использует только X-сервер для вывода, а xvimagesink — libxv. Так же xvimagesink имеет чуть больше параметров. Рассмотрим их:

display

Имя X-дисплея, например :0, :1, :2…

pixel-aspect-ratio

Данный параметр указывает соотношение сторон, например 2/1. По умолчанию имеет значение 1/1.

force-aspect-ratio

В некоторых случаях явное указывание pixel-aspect-ratio может не сработать (в случае если «переговоры» между элементами привели к тому, что нужно оставить оригинальный pixel-apect-ratiio), и данное свойство исправляет эту «проблему».

Далее перечисляются свойства, имеющиеся только у xvimagesink.

brightness, contrast, hue, saturation

Переведя на русский язык названия этих свойств («яркость-контрастность-оттенок-насыщенность), можно понять их назначение. Значения могут располагаться в диапазоне от -1000 до 1000.

device

Порядковый номер видеокарты, с помощью которой необходимо выводить видео.

double-buffer

Данное свойство включает и выключает использование двойной буферизации.

colorkey, autopaint-colorkey

Данные свойства используются для управления цветом оверлея, на котором рисуется видео. Colorkey должно в себе содержать gint с кодом цвета, а autopaint-colorkey включает «заливку» оверлея этим цветом.
Примечание:
В документации отсутствуют пояснения по поводу того, что из себя представляет цвет, но, скорее всего, цвет указывается в RGB формате, по формуле ((RR & 0xff) << 16) | ((GG & 0xff) << 8 ) | (BB & 0xff).

draw-borders

Данное свойство включает или отключает отрисовку черной обводки в местах, где образовалась «пустота» при применении force-aspect-ratio.
Примеры использования:

8. aasink и cacasink

Эти элементы уже, наверно, не актуальны, и могут использоваться либо «олдфагами», либо теми, кто хочет показать «что могут линуксы», хотя, возможно, я и ошибаюсь. Оба этих элемента позволяют выводить видео посредством библиотек libaa и libcaca, то есть выводить видео в виде ASCII-арта. Различие между ними только одно: libaa выводит черно-белые символы, а libcaca — цветные.
Останавливаться на параметрах данных элементов мы не будем, т. к. практической пользы от них (ИМХО) нет.
Примеры использования:

9. gdkpixbufsink

Данный элемент выводит видеопоток в объект GdkPixbuf, который доступен через read-only свойство last-pixbuf. Для чего это нужно — я даже не могу представить.

Примеры

В качестве примера мы будем использовать плеер из прошлой статьи, но с добавлением новой возможности — записью потока в файл.

Примечание:
Данный пример (как и пример из прошлой статьи), не работает в Ubuntu 13.10, падая с segfault (см. lp:1198375).

Рассмотрим, что тут происходит. Для удобства и логического разделения создаем контейнер RecorderBin, в который помещаем три элемента — vorbisenc, oggmux и filesink. Элементы vorbisenc и oggmux необходимы для кодирования RAW-потока в формат vorbis и для заворачивания его в контейнер ogg соответственно. Подробно на контейнерах (bin) мы останавливаться не будем, напомню только то, что контейнеры являются законченными элементами, которые выполняют какое-либо действие в pipeline.
В RecorderBin все три элемента линкуются между собой последовательно, по схеме:

Заключение

Сегодня мы рассмотрели практически все имеющиеся устройства для вывода потока. В последующих статьях мы рассмотрим т. н. фильтры — элементы, которые выполняют различную работу, связанную с обработкой потоков. К фильтрам относятся различные энкодеры и декодеры, де/мультиплексоры, различные аудио/видео фильтры и прочие служебные элементы.

Читайте также: