Попытка воспроизведения нескольких видеофайлов одновременно в Gstreamer - PullRequest
6 голосов
/ 15 сентября 2011

Я пытаюсь создать команду для gstreamer, чтобы он мог воспроизводить несколько видеофайлов одновременно.Итак, я провел некоторое исследование и нашел это

gst-launch -e videomixer name=mix ! ffmpegcolorspace ! xvimagesink \
    videotestsrc pattern=1 ! video/x-raw-yuv, framerate=5/1, width=320, height=180 ! \
    videobox border-alpha=0 top=0 left=0 ! mix. \
    videotestsrc pattern=15 ! video/x-raw-yuv, framerate=5/1, width=320, height=180 ! \
    videobox border-alpha=0 top=0 left=-320 ! mix. \
    videotestsrc pattern=13 ! video/x-raw-yuv, framerate=5/1, width=320, height=180 ! \
    videobox border-alpha=0 top=-180 left=0 ! mix. \
    videotestsrc pattern=0 ! video/x-raw-yuv, framerate=5/1, width=320, height=180 ! \
    videobox border-alpha=0 top=-180 left=-320 ! mix. \
    videotestsrc pattern=3 ! video/x-raw-yuv, framerate=5/1, width=640, height=360 ! mix.

Это выходное изображение = http://i.stack.imgur.com/4lZWL.png

, и вот код, который я изменил и предположил, что он такой

http://i.stack.imgur.com/Mdsc0.png

time gst-launch -e videomixer name=mix ! ffmpegcolorspace ! xvimagesink \
    filesrc location=./Cityscape1Min_720p_mp4.mp4 ! video/x-raw-yuv, framerate=5/1, \
        width=320, height=180 ! videobox border-alpha=0 top=0 left=0 ! mix. \
    filesrc location=./Cityscape1Min_720p_mp4.mp4 ! video/x-raw-yuv, framerate=5/1, \
        width=320, height=180 ! videobox border-alpha=0 top=0 left=-320 ! mix. \
    filesrc location=./Cityscape1Min_720p_mp4.mp4 ! video/x-raw-yuv, framerate=5/1, \
        width=320, height=180 ! videobox border-alpha=0 top=-180 left=0 ! mix. \
    filesrc location=./Cityscape1Min_720p_mp4.mp4 ! video/x-raw-yuv, framerate=5/1, \
        width=320, height=180 ! videobox border-alpha=0 top=-180 left=-320 ! mix. 

Но это не работает.У кого-нибудь есть другие решения?

Ответы [ 2 ]

4 голосов
/ 03 января 2012

Мне нравится этот подход, он создаст матрицу 2x2. раковина_0 это ваш фон, вы также можете установить его в качестве изображения. Больше информации о картинка в картинке .

gst-launch -e \
videomixer name=mix \
        sink_0::xpos=0   sink_0::ypos=0  sink_0::alpha=0\
        sink_1::xpos=0   sink_1::ypos=0 \
        sink_2::xpos=200 sink_2::ypos=0 \
        sink_3::xpos=0   sink_3::ypos=100 \
        sink_4::xpos=200 sink_4::ypos=100 \
    ! xvimagesink \
videotestsrc pattern="black" \
    ! video/x-raw-yuv,width=400,height=200 \
    ! mix.sink_0 \
uridecodebin uri='file:///home/user/video/test1.mp4' \
    ! ffmpegcolorspace ! videoscale \
    ! video/x-raw-yuv,width=200,height=100 \
    ! mix.sink_1 \
uridecodebin uri='file:///home/user/video/test2.mp4' \
    ! ffmpegcolorspace ! videoscale \
    ! video/x-raw-yuv,width=200,height=100 \
    ! mix.sink_2 \
uridecodebin uri='file:///home/user/video/test.avi' \
    ! ffmpegcolorspace ! videoscale \
    ! video/x-raw-yuv,width=200,height=100 \
    ! mix.sink_3 \
uridecodebin uri='mms://server/video/test.wmv' \
    ! ffmpegcolorspace ! videoscale \
    ! video/x-raw-yuv,width=200,height=100 \
    ! mix.sink_4 \
0 голосов
/ 27 ноября 2015

Удалить framerate=5/1 из всех ваших реальных видео. Для меня только videotestsrc можно изменить с помощью framerate capfilter.

gst-launch-0.10 -e videomixer name=mix ! ffmpegcolorspace ! xvimagesink \
    uridecodebin uri=file:///home/user/Desktop/sintel_trailer-480p.webm ! \
            ffmpegcolorspace ! videoscale ! \
            video/x-raw-yuv, width=320, height=180 ! \
            videobox border-alpha=0 top=0 left=0 ! mix. \
    videotestsrc pattern=15 ! \
            video/x-raw-yuv, width=320, height=180 ! \
            videobox border-alpha=0 top=0 left=-320 ! mix. \
    videotestsrc pattern=13 ! \
            video/x-raw-yuv, width=320, height=180 ! \
            videobox border-alpha=0 top=-180 left=0 ! mix. \
    videotestsrc pattern=0 ! \
            video/x-raw-yuv, width=320, height=180 ! \
            videobox border-alpha=0 top=-180 left=-320 ! mix. \
    videotestsrc pattern=3 ! \
            video/x-raw-yuv, framerate=5/1, width=640, height=360 ! mix.
...