我想将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播放视频没有问题。