我正在使用Gstreamer拍摄4个视频(MKV容器,Mjpeg编解码器,每秒25帧,5分钟长)来生成视频的“墙”(基本上是2x2矩阵)。我正在使用以下管道:
#!/bin/sh
gst-launch -e videomixer name=mix ! ffmpegcolorspace ! jpegenc ! avimux ! filesink location=$1.avi \
uridecodebin uri="file://${PWD}/$1/1.mkv" ! videoscale ! videorate ! video/x-raw-yuv,width=300,height=200, framerate=25/1 ! videobox border-alpha=0 top=0 left=0 ! mix. \
uridecodebin uri="file://${PWD}/$1/2.mkv" ! videoscale ! videorate ! video/x-raw-yuv,width=300,height=200,framerate=25/1 ! videobox border-alpha=0 top=0 left=-300 ! mix. \
uridecodebin uri="file://${PWD}/$1/3.mkv" ! videoscale ! videorate ! video/x-raw-yuv,width=300,height=200,framerate=25/1 ! videobox border-alpha=0 top=-200 left=0 ! mix. \
uridecodebin uri="file://${PWD}/$1/4.mkv" ! videoscale ! videorate ! video/x-raw-yuv,width=300,height=200,framerate=25/1 ! videobox border-alpha=0 top=-200 left=-300 ! mix. \
代码有效,但最终结果只有17秒而不是像源视频那样5分钟,而且我似乎没有正确使用videorate元素 - 输出视频似乎随机“加速“,阅读相框,而不是保持原始视频的速度。
有趣的是,当源文件是.wmv(Windows Media 9编解码器)时,一切似乎都运行正常。有什么想法吗?
答案 0 :(得分:2)
尝试将你的封口过滤器放在引号中...视频! “video / x-raw-yuv,width = 300,height = 200,framerate = 25/1”!视频框... 也可以试试videomixer2