2016-05-30 20 views
0

打我需要組成一個管道的「子母畫面」效果,媒體從兩個文件合併:從第一個文件是的Gstreamer子母畫面 - 兩個文件並行

1)視頻內容在全窗口顯示 2)來自第二個文件的視頻被調整大小並顯示在窗口的左上角 3)來自兩個文件的音頻混合 4)兩個文件的內容應該同時播放

到目前爲止,我得到了下面的管道:

gst-launch-1.0 -e \ 
    filesrc name="src0" location=$FILE0 \ 
    ! decodebin name="decodebin0" ! queue ! videoscale ! capsfilter caps="video/x-raw,width=120" ! videoconvert ! videomixer.sink_0 decodebin0. ! queue ! audioconvert ! audiomixer.sink_0 \ 
    filesrc name="src1" location=$FILE1 \ 
    ! decodebin name="decodebin1" ! queue ! videoscale ! capsfilter caps="video/x-raw" ! videoconvert ! videomixer.sink_1 decodebin1. ! queue ! audioconvert ! audiomixer.sink_1 \ 
    videomixer name="videomixer" ! autovideosink \ 
    audiomixer name="audiomixer" ! autoaudiosink 

但是,它會逐個播放流,而不是並行播放流。有人知道這裏應該改變什麼,以便同時播放流嗎?

PS:附接這條管線的可視化的圖:

回答

0

令人驚訝地 - 的在管道中的源的順序並物質 - 管道的略微修改後和放置源與「較大」框架上的第一地方,我能得到的結果如預期:

gst-launch-1.0 -ev \ 
    filesrc name="src1" location=$FILE1 \ 
    ! decodebin name="decodebin1" ! queue ! videoscale ! capsfilter caps="video/x-raw,framerate=15/1" ! videoconvert ! videomixer.sink_1 decodebin1. ! queue ! audioconvert name="ac1" \ 
    filesrc name="src0" location=$FILE0 \ 
    ! decodebin name="decodebin0" ! queue ! videoscale ! capsfilter caps="video/x-raw,width=120,framerate=15/1" ! videoconvert ! videomixer.sink_0 decodebin0. ! queue ! audioconvert name="ac0"\ 
    ac0. ! audiomixer.sink_0 \ 
    ac1. ! audiomixer.sink_1 \ 
    videomixer name="videomixer" ! autovideosink \ 
    audiomixer name="audiomixer" ! autoaudiosink \