使用gstreamer管道进行qprocess

时间:2014-08-21 11:49:50

标签: c++ qt process gstreamer

我想将videotestsrc的输出保存为长度为20秒的avi文件,大小为1024x720,我希望gplay能够播放它。在命令行中,下面的管道可以实现我的目的。

gst-launch -ve videotestsrc ! 'video/x-raw-yuv,width=1024,height=720,framerate=15/1,format(fourcc)I420' ! queue ! mfw_vpuencoder codec-type=2 ! queue ! avimux ! filesink location=test.avi

20秒后,我用kill -2杀死了这个管道。

但是当我尝试使用qprocess运行此管道并使用kill -2从代码中删除它时,gplay无法播放视频文件。此外,当我将大小信息更改为640x480并将其作为qprocess运行时,gplay可以播放它。我想知道我的错误是什么。为什么这个管道不能用于qprocess?

Qt代码:

QStringList args;
args << "-ve";
args << "videotestsrc";
args << "!";
args << "video/x-raw-yuv,width=1024,height=720,framerate15/1,format(fourcc)I420";
args << "!";
args << "queue";
args << "mfw_vpuencoder codec-type=2";
args << "!";
args << "queue";
args << "!";
args << "avimux";
args << "!";
args << "filesink location=test.avi";

process->start("gst-launch", args);
usleep( 20000000 ); //20secs
kill( process->pid(), 2 );

PS:当我将上面代码中的尺寸信息更改为640x480时,gplay播放视频没有问题。

0 个答案:

没有答案