LINUX.ORG.RU

Почему GStreamer не работает в Windows?

 , , ,


0

1

GStreamer прекрасно работает в линуксе, но в винде не работает:

require 'gtk2'
require 'gst'

def os_family
  case RUBY_PLATFORM
    when /ix/i, /ux/i, /gnu/i, /sysv/i, /solaris/i, /sunos/i, /bsd/i
      'unix'
    when /win/i, /ming/i
      'windows'
    else
      'other'
  end
end

Gst.init

pipeline = Gst::Pipeline.new('pipeline1')
videosrc = Gst::ElementFactory.make('videotestsrc', 'videosrc1')
videoconvert = Gst::ElementFactory.make('autovideoconvert', 'videoconvert1')
videosink = Gst::ElementFactory.make('autovideosink', 'videosink1');

pipeline.add(videosrc, videoconvert, videosink)
videosrc >> videoconvert >> videosink

window = Gtk::Window.new('Video test')
window.signal_connect("destroy") { pipeline.stop; Gtk.main_quit }
window.set_default_size(320, 240)
window.show_all

pipeline.bus.add_watch do |bus, message|
  if (message and message.structure and message.structure.name \
  and (message.structure.name == 'prepare-xwindow-id'))
    Gdk::Threads.synchronize do
      Gdk::Display.default.sync
      if not window.destroyed? and window.window
        win_id = nil
        if os_family=='windows'
          win_id = window.window.handle
        else
          win_id = window.window.xid
        end
        imagesink = message.src
        imagesink.set_property("force-aspect-ratio", true)
        imagesink.set_xwindow_id(win_id)
      end
    end
  end
  true
end

pipeline.play
Gtk.main

Пробовал и ruby1.9.3 и ruby2.0.0.
В обоих случаях библиотеки ставил через:
gem.bat install gtk2 gstreamer

У кого-то вообще работает GStreamer в Винде?
В чём может быть проблема? Помогите, вопрос жизни и смерти!

★★★★

Ну, мне кажется, что autovieosink не выбирает нужный вывод видео. Попробуй, например, dshowvideosink или directdrawsink напрямую.

com ()

У кого-то вообще работает GStreamer в Винде?

Работает, у нас просмотровщик потокового видео, RTP-поток, использует GStreamer, правда написан с использованием Qt.

imb ★★ ()
Ответ на: комментарий от com

У меня была до этого версия gstreamer 0.1 (с ruby 1.86), там элементы dshowvideosink и directdrawsink были. Но этот гстример я ставил отдельно от руби (не через гемс).

В версии ruby выше 1.9 уже отдельно gstreamer 1.0 не поставить, так как они щас идут только в виде mingw32.
Поэтому приходиться юзать gems.

Но вот беда: если ставить через gems, то ни dshowvideosink, ни и directdrawsink уже нету в комплекте (хотя вроде как плагины base, good и bad стоят).

Похоже, их выкинули вообще. Ну или что, я не знаю...

А версию ruby 1.86 я щас не могу юзать, т.к. стал использовать очень вкусные методы из 1.9 (да и с юникодом он адекватнее работает).

Вот что щас делать, может кто-то угостит меня уже готовым ruby с нормальным gstreamer'ом в комплекте?

Novator ★★★★ ()
Ответ на: комментарий от imb

А можешь как-то запаковать этот руби (или питон) + гстримером, и выложить куда-нибудь? Знаю, архив получится где-то на 300Мб...

Только мне нужно чтоб ruby был версии не ниже 1.9 (гстример любой подойдет).

А лучше подскажите, как в новом руби (с версии 1.9) оживлять «dshowvideosink»?

Novator ★★★★ ()
Последнее исправление: Novator (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.