레이블이 python인 게시물을 표시합니다. 모든 게시물 표시
레이블이 python인 게시물을 표시합니다. 모든 게시물 표시

2007년 1월 20일 토요일

gst + python 팁

여러가지 방법으로 GStreamer를 사용할 수 있긴 하지만 GObject를 기반으로 한 동적인 특징은 파이썬과 상당히 어울린다.

GStreamer에서 흔히 하는 일 중의 하나가 n개의 element를 만들고 그 element를 pipeline에 추가한 다음에 줄줄이 연결하는 일인데, 사용하는  컴퓨터의 pygst가 구버전인지 add_many()는 구현되어 있지만 link_many()가 구현되어 있지 않다...  그래서 map/zip으로 해결.  (하는 김에 add_many()도 map으로)

import gst

player = gst.Pipeline('player')

elements = [gst.element_factory_make('filesrc'),
            gst.element_factory_make('mad'),
            gst.element_factory_make('gconfaudiosink')]
elements[0].set_property('location', 'fighter.mp3')

map(player.add, elements)
map(lambda (x,y): x.link(y), zip(elements[:-1], elements[1:]))

player.set_state(gst.STATE_PLAYING)