Gstreamer windows как пользоваться
Добавьте 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
и убедиться в том, что в результате выводится набор значений свойств соответствующего плагина.
После этого вы можете попытаться проиграть синусоидальный сигнал с помощью команды:и проверить, слышно ли что-либо. Перед тем, как надеть наушники, следует убедиться в том, что уровень звука не находится на нуле, а также в том, что он не слишком высокий.
В случае использования окружения рабочего стола 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! Сегодня мы поговорим про устройства вывода (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 все три элемента линкуются между собой последовательно, по схеме:
Заключение
Сегодня мы рассмотрели практически все имеющиеся устройства для вывода потока. В последующих статьях мы рассмотрим т. н. фильтры — элементы, которые выполняют различную работу, связанную с обработкой потоков. К фильтрам относятся различные энкодеры и декодеры, де/мультиплексоры, различные аудио/видео фильтры и прочие служебные элементы.
Читайте также: