hi guys!
I'm writing an audio encoder, and I'm having trouble. When I encode an audio segment to flac, the encoder generates invalid file. $./encoder.py (encoder.py:10109): GStreamer-CRITICAL **: _gst_util_uint64_scale: assertion `denom != 0' failed True eos $ file dest.flac file dest.flac: MPEG ADTS, AAC, v2 LC, 24 kHz, stereo+center+LFE Thanks Platon #!/usr/bin/python import pygst pygst.require("0.10") import gst import gobject import sys from urllib import quote from threading import Semaphore, Thread FILE="/media/love/lossless/The Lovin' Spoonful/The Very Best Of/The Lovin' Spoonful - The Very Best Of.ape" sem = Semaphore(0) eos = Semaphore(0) state = None def on_message(bus, message): t = message.type src = message.src.get_name() global sem,eos, state if src == 'pipeline' and t == gst.MESSAGE_STATE_CHANGED: os,ns,pn = message.parse_state_changed() if ns == state: state = None sem.release() elif t == gst.MESSAGE_EOS: print "eos" eos.release() elif t == gst.MESSAGE_ERROR: print "Error" eos.release() sem.release() sys.exit(1) def encode(): start = 3673626666666L stop = 3785800000000L pipeline = gst.element_factory_make("playbin", "pipeline") pipeline.set_property("uri", '<a class="moz-txt-link-freetext" href="file://">file://' + quote(FILE) ) fakesink = gst.element_factory_make("fakesink", "fakesink") abin = gst.Bin() enc = gst.element_factory_make("flacenc", "encoder") sink = gst.element_factory_make("filesink", "sink") sink.set_property("location", "dest.flac") abin.add(enc, sink) gst.element_link_many(enc, sink) sinkpad = enc.get_static_pad("sink") abin.add_pad(gst.GhostPad('sink', sinkpad)) pipeline.set_property("audio-sink", abin) pipeline.set_property("video-sink", fakesink) bus = pipeline.get_bus() bus.add_signal_watch() bus.connect("message", on_message) global state, sem state = gst.STATE_PAUSED pipeline.set_state(gst.STATE_NULL) pipeline.set_state(gst.STATE_PAUSED) sem.acquire() print pipeline.seek(1.0, gst.Format(gst.FORMAT_TIME), gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, start, gst.SEEK_TYPE_SET, stop) pipeline.set_state(gst.STATE_PLAYING) eos.acquire() pipeline.set_state(gst.STATE_NULL) loop.quit() gobject.threads_init() loop = gobject.MainLoop() Thread(target=encode).start() loop.run() _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |