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)
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)