привязки для GStreamer на Python для Windows

Я рассматриваю gstreamer как средство выбора видеоустройства из списка, чтобы передать его скрипту opencv.

Я абсолютно не понимаю, как использовать gstreamer с python в windows. Я установил Windows GStreamer 1.07 двоичные файлы С официальный сайт gstreamer. Однако, я не мог импортировать pygst и gst модули в python.

>>> import pygst

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import pygst
ImportError: No module named pygst
>>> 

Я проверил установку gstreamer и там, кажется, нет pygst.py при условии. однако есть файл с именем gst-env который содержит пути для переменных environnement (которые не были добавлены к системным переменным при установке. Я проверил.

другие вопросы по той же проблеме здесь и здесь, например, все ли используют winbuild версии gstreamer. Почему это так?

Я полностью потерялся в этом.

редактировать

хорошо, мне это удалось использование SDK для Gstreamer 0.10 (в котором есть pygst.py), но нет ли способа использовать серию gstreamer 1.0, так как 0.10-это "конец жизни"?

3 ответов


Это немного поздно, но, надеюсь, это поможет.

самый простой способ использовать GStreamer 1.0-скачать последнюю версию: http://sourceforge.net/projects/pygobjectwin32/files/

это установит модули Python (2.7 или 3.3) и, необязательно, GStreamer с плагинами.

однако, если у вас уже есть GStreamer 0.10 SDK (от docs.gstreamer.com/display/GstSDK/Home) и старая установка GStreamer 1.0 где-то, там может будут некоторые проблемы с запуском программ GStreamer 0.10 Python, таких как ImportError: DLL load failed и т. д. Вот моя подробная настройка для всего:

установка модулей GST 0.10 SDK и Python

  1. установить SDK из docs.gstreamer.com/display/GstSDK/Installing + на + окна. Проверьте и установите переменные среды
    GSTREAMER_SDK_ROOT_X86=..ваш sdk dir
    GST_PLUGIN_PATH=%GSTREAMER_SDK_ROOT_X86%\lib\gstreamer-0.10
    Path=%GSTREAMER_SDK_ROOT_X86%\bin;%GSTREAMER_SDK_ROOT_X86%\lib;%Path%
  2. установить pygtk-all-in-one-2.24.2.с Win32-py2.7 от ftp.gnome.org/pub/GNOME/binaries/win32/
  3. на Вашем сайте Python-packages dir создайте файл pygst.pth. Поместите следующие строки, которые должны указывать на каталоги модулей Python GSt 0.10:
    ..ваш %GSTREAMER_SDK_ROOT_X86% \ lib\python2.7\site-пакеты
    ..ваш %GSTREAMER_SDK_ROOT_X86% \lib\python2.7\site-packages\gst-0.10
  4. после этого pydoc должен иметь возможность найти документацию для pygst, gst и т. д. Кроме того, intellisense в инструментах Python для Visual studio также должен работать (после восстановления БД завершения и перезапуска VS)

установка модулей GST 1.0 и Python

  1. установите GStreamer 1.0 от gstreamer.freedesktop.org/data/pkg/windows/. Проверить среду:
    GSTREAMER_1_0_ROOT_X86=..ОКП установки 1.0 реж
    GST_PLUGIN_PATH_1_0=%GSTREAMER_1_0_ROOT_X86%\lib\gstreamer-1.0\
    Path=%GSTREAMER_1_0_ROOT_X86%\bin;%GSTREAMER_1_0_ROOT_X86%\lib;%Path%
  2. установить pygi-aio-3.10.2-win32_rev14-setup из приведенной выше ссылки Sourceforge. Включите GStreamer и плагины в установку.
  3. создать файл gi.pth:
    %GSTREAMER_1_0_ROOT_X86%\bin
    %GSTREAMER_1_0_ROOT_X86%\lib
  4. я удалил все от сайт-пакеты / gnome за исключением:
    libgirepository-1.0-1
    libpyglib-gi-2.0-python27-0
    lib С .typelib файлы
    и несколько простых примеров, кажется, работают нормально.
  5. Intellisense в VS не кажется работать на импорт из gi.хранилище.
  6. вы можете проверить свою установку следующим образом:

    python2-c "импорт gi; gi.require_version ('Gst',' 1.0'); от gi.хранилище НДС на импорт; НДС.init (нет); pipeline = Gst.parse_launch ('playbin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm'); трубопровод.set_state(Gst.Государство.Играть); автобус = трубопровод.get_bus (); msg = шина.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.Класса messagetype.ОШИБКА| компания GST.Класса messagetype.EOS)"

изменить: Если вы используете оба GStreamer0.10 и GStreamer1.0 для GStreamer0 лучше создать отдельную виртуальную среду.10 и поставил .ПТГ файлы в его сайт-пакеты. См. мой комментарий ниже.

HTH, Тома


Шаг 1: Windows 8.1 64-разрядная

Шаг 2: Загрузите и установите Python

C:\>wget https://www.python.org/ftp/python/2.7.9/python-2.7.9.amd64.msi
C:\>./python-2.7.9.amd64.msi
C:\>cd C:\Python27
C:\>pwd
C:\Python27

Шаг 3: загрузите установить привязки Python для Gstreamer 1.0

C:\>wget http://sourceforge.net/projects/pygobjectwin32/files/pygi-aio-3.14.0_rev14-setup.exe
C:\>unzip "pygi-aio-3.14.0_rev14-setup.exe"
C:\>whereis_unzipped "pygi-aio-3.14.0_rev14-setup.exe"
C:\pygi
C:\>./c:\pygi\setup.exe

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here

Шаг 4: запустите этот код

C:\>C:\Python27\python.exe -c "import gi; gi.require_version('Gst', '1.0'); from gi.repository import Gst; Gst.init(None); pipeline = Gst.parse_launch('playbin uri=http://docs.gstreamer.com/media/sintel_trailer-480p.webm'); pipeline.set_state(Gst.State.PLAYING); bus = pipeline.get_bus();msg = bus.timed_pop_filtered(Gst.CLOCK_TIME_NONE, Gst.MessageType.ERROR | Gst.MessageType.EOS)"

Шаг 5: Вы должны подождать 10 минут, чтобы увидеть результат, похожий на следующий. Потому что это почему-то требует времени

enter image description here


установщик от http://sourceforge.net/projects/pygobjectwin32/files/ работы для тест, что Том дал. Попробуйте сопоставить плагины, установленные установщиком pygi, с плагинами официального gstreamer.

установщик пытается быть "портативной и частной" установкой для каждого python без изменений registry / environmen vars.

моя заметка о DLL времени выполнения, рекомендуется не смешивать время выполнения, потому что один из pygi сделан специально для python a.к. связанный с msvcrt, предпочитаемый python, и используйте соглашение stat (), которое также используется python. Если публичный api такой glib stat () использует другое соглашение, чем другая dll, то смешивание во время выполнения может привести к Тихому сбою. Кроме этого, он может работать нормально.