GStreamer Python Ошибка: 'gst.ElementNotFoundError: videoconvert' - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь создать простой конвейер GStreamer, который берет видео, обрезает и воспроизводит его, с python.

Через терминал этот конвейер прекрасно работает:

gst-launch-1.0 filesrc location='/home/inbarcha/Desktop/gstreamer_interface/U2One.mp4' ! decodebin ! videoconvert ! videocrop top=150 left=150 right=4 bottom=0 ! ximagesink

Но, когда я пытаюсь использовать этот python код:

import pygst
pygst.require('0.10')
import gst

import pygtk
pygtk.require('2.0')
import gtk

class CropVideo:
    def __init__(self, video_path, top_crop, left_crop, right_crop, bottom_crop):
        self.pipeline = gst.Pipeline('crop_video')

        self.filesrc = gst.element_factory_make('filesrc', 'file_src')
        self.filesrc.set_property('location', video_path)
        self.pipeline.add(self.filesrc)

        self.decodebin = gst.element_factory_make('decodebin', 'decode')
        self.pipeline.add(self.decodebin)
        self.filesrc.link(self.decodebin)

        self.videoconvert = gst.element_factory_make('videoconvert', 'convert')
        self.pipeline.add(self.videoconvert)
        self.decodebin.link(self.videoconvert)

        self.videocrop = gst.element_factory_make('videocrop', 'crop')
        self.videocrop.set_property('top', top_crop)
        self.videocrop.set_property('left', left_crop)
        self.videocrop.set_property('right', right_crop)
        self.videocrop.set_property('bottom', bottom_crop)
        self.pipeline.add(self.videocrop)
        self.videoconvert.link(self.videocrop)

        self.ximagesink = gst.element_factory_make('ximagesink', 'output_video')
        self.pipeline.add(self.ximagesink)
        self.videocrop.link(self.ximagesink)


if __name__ == "__main__":
    start = CropVideo('/home/inbarcha/Desktop/gstreamer_interface/U2One.mp4', 150, 150, 4, 0)
    gtk.main()

Я получаю ошибку:

Traceback (most recent call last):
  File "/home/inbarcha/Desktop/gstreamer_interface/src/gstreamer_crop_video.py", line 41, in <module>
    start = CropVideo('/home/inbarcha/Desktop/gstreamer_interface/U2One.mp4', 150, 150, 4, 0)
  File "/home/inbarcha/Desktop/gstreamer_interface/src/gstreamer_crop_video.py", line 13, in __init__
    self.videoconvert = gst.element_factory_make('videoconvert', 'convert')
gst.ElementNotFoundError: videoconvert

Я не могу выяснить проблему. Я пытался заставить python использовать gst-1.0, а не gst-0.10, но хотя я и скачал пакет python с "sudo apt-get update / sudo apt-get install python -gst-1.0" , в каталоге python2 .7 dist-packages я вижу только "gst-0.10" и не могу найти каталог установки для gst-1.0.

Мне кажется, что я пропал что-то и ответ прямо передо мной.

Любая помощь будет принята с благодарностью.

Версия Ubuntu: 14.04 Python версия: 2.7

1 Ответ

0 голосов
/ 17 февраля 2020

Похоже, что элемент videoconvert недоступен в Gstreamer 0.10. Согласно этой документации https://gstreamer.freedesktop.org/documentation/application-development/appendix/porting-1-0.html?gi-language=c

ffmpegcolorspace был удален и заменен на видеоконвертер

...