2014-01-21 2 views
1

"autoaudiosrc"요소를 사용하여 오디오를 기록하는 python gstreamer - 1.0 코드가 있습니다. 내 질문은 거의 '미리 정의 된'초 후에 파이프 라인을 중지하고 바람직하게 gstelement 형식으로 추가 할 것입니다. 기록에 사용gstreamer에서 미리 정의 된 시간 동안 오디오를 녹음하는 방법은 무엇입니까?

현재 파이프 라인 :

gst-launch-1.0 autoaudiosrc num-buffers=100 ! audioconvert ! vorbisenc ! oggmux ! filesink location="sit.ogg" 

해당 파이썬 코드

import sys, os 


import gi 
gi.require_version('Gst', '1.0') 
from gi.repository import GObject, Gst, Gtk 
GObject.threads_init() 
Gst.init(None) 

pipeline = Gst.Pipeline() 
current_state = "STATE_NULL" 

autoaudiosrc = Gst.ElementFactory.make("autoaudiosrc", "autoaudiosrc") 
audioconvert = Gst.ElementFactory.make("audioconvert", "audioconvert") 
vorbisenc = Gst.ElementFactory.make("vorbisenc", "vorbisenc") 
oggmux = Gst.ElementFactory.make("oggmux", "oggmux") 
filesink = Gst.ElementFactory.make("filesink", "filesink") 
url = "1.ogg" 
filesink.set_property("location",url) 
pipeline.add(autoaudiosrc) 
pipeline.add(audioconvert) 
pipeline.add(vorbisenc) 
pipeline.add(oggmux) 
pipeline.add(filesink) 

autoaudiosrc.link(audioconvert) 
audioconvert.link(vorbisenc) 
vorbisenc.link(oggmux) 
oggmux.link(filesink) 

pipeline.set_state(Gst.State.PLAYING) 
Gtk.main() 

~

답변

1

예. 타이머 (g_timeout_add 또는 gst_clock_new_single_shot_id를 통해 gstreamer 시계 사용)를 시작할 수 있습니다. 타이머/시계 콜백이 발생하면 파이프 라인에 eos 이벤트를 보냅니다 (gst_element_send_event (파이프 라인, gst_event_new_eos()).

+0

감사 인사는 시도하고 다시 돌아올 것입니다. –

관련 문제