2010-08-14 52 views
1

我無法將音頻和視頻合併到一個文件中。 Python代碼看起來像這樣;Python + GStreamer - 不會連接

  filmPipe = gst.Pipeline("filmPipe") 
      filmSrc = gst.element_factory_make("multifilesrc", "filmSrc") 
      filmSrc.set_property("location", "pictures/%d.png") 
      filmFilt1 = gst.element_factory_make("capsfilter", "filmFilt1") 
      filmCap1 = gst.Caps("image/png,framerate=5/1,pixel-aspect-ratio=1/1") 
      filmFilt1.set_property("caps", filmCap1) 
      filmPngDec = gst.element_factory_make("pngdec", "filmPngDec") 
      filmff = gst.element_factory_make("ffmpegcolorspace", "filmff") 
      filmFilt2 = gst.element_factory_make("capsfilter", "filmFilt2") 
      filmCap2 = gst.Caps("video/x-raw-yuv") 
      filmFilt2.set_property("caps", filmCap2) 
      filmTheora = gst.element_factory_make("xvidenc", "filmTheora") 
      filmQue = gst.element_factory_make("queue", "filmQue") 
      filmOggmux = gst.element_factory_make("ffmux_mp4", "filmOggmux") 
      filmFilesink = gst.element_factory_make("filesink", "filmFilesink") 
      filmFilesink.set_property("location", self.movPath) 
      musicSrc = gst.element_factory_make("filesrc", "musicSrc") 
      musicSrc.set_property("location", self.musicPath) 
      musicDec = gst.element_factory_make("ffdec_mp3", "musicDec") 
      musicEnc = gst.element_factory_make("lame", "musicEnc") 
      musicQue = gst.element_factory_make("queue", "musicQue") 

      filmPipe.add(filmSrc, filmFilt1, filmPngDec, filmff, filmFilt2, filmTheora, filmQue, filmOggmux, filmFilesink) 
      filmPipe.add(musicSrc, musicDec, musicEnc, musicQue) 
      gst.element_link_many(filmSrc, filmFilt1, filmPngDec, filmff, filmFilt2, filmTheora, filmQue, filmOggmux, filmFilesink) 
      gst.element_link_many(musicSrc, musicDec, musicEnc, musicQue, filmOggmux, filmFilesink) 
      filmPipe.set_state(gst.STATE_PLAYING) 

這將返回以下錯誤:

Traceback (most recent call last): 
File "app.py", line 100, in movGen 
gst.element_link_many(musicSrc, musicDec, musicEnc, musicQue, filmOggmux, filmFilesink) 
gst.LinkError: failed to link filmOggmux with filmFilesink 

是否有人知道我要去哪裏錯了,還是如何解決這一問題?

回答

1

您正在將2個filmOggmux鏈接到filmFilesink:這是不允許的,只有一個鏈接是可能的。

嘗試在第二個gst.element_link_many()中刪除filmFilesink。

+0

好的,但我怎樣才能將兩者合併成一個文件?示例代碼? – 2010-09-11 09:37:09

+0

您已經將muxer級別的音頻和視頻合併在一起。你只需要放下第二個gst.element_link_many()imho中的filmFilesink。該複用器將複用它們,並將合併後的流輸出到您在第一個link_many()中指定的文件鏈接() – elmarco 2010-09-12 00:29:25

+0

無錯誤消息,但.mp4文件顯示爲空。 :/ – 2010-09-15 21:57:48