下面是我要复制的命令:
gst-launch filesrc location=test.flac ! flacdec ! lame ! filesink location=test.mp3
当我运行这个命令时,它运行得很好。我试着用Python绑定来复制这一点,但一点运气都没有。我没有发现这些脚本有任何错误,但它们没有按预期工作:
当我运行这个脚本时,我只得到一个空的MP3文件:
^{pr2}$运行此脚本时,我得到一个损坏的MP3文件:
import gst
converter = gst.Pipeline('converter')
source = gst.element_factory_make('filesrc', 'file-source')
source.set_property('location', 'test.flac')
decoder = gst.element_factory_make('flacdec', 'decoder')
encoder = gst.element_factory_make('lame', 'encoder')
sink = gst.element_factory_make('filesink', 'sink')
sink.set_property('location', 'test.mp3')
converter.add(source, decoder, encoder, sink)
source.link(sink)
converter.set_state(gst.STATE_PLAYING)
有人知道我做错了什么吗?在
有些人最终找到了这个答案,寻找命令行/bash解决方案。这是一个很好的转换脚本。在
Gstreamer使用GObject作为框架,因此您需要运行
gobject.MainLoop()
来启动管道中的消息流:在第二个示例中,您还需要运行MainLoop并链接所有管道元素(例如使用
element_link_many
)。 您只将source连接到sink,所以实际的管道是filesrc ! filesink
。在以下是更正代码:
^{pr2}$相关问题 更多 >
编程相关推荐