在各种努力下,终于解决了这个说大说不小的问题,可编程嵌入第三方视频软件mplayer到界面中,并控制其大小和位置。
思路是使用QProcess,开启Mplayer进程,将其在Qt代码中以后台方式执行。
经过搜索网络及查看Linux manu,Mplayer后台运行的终端指令为-slave,但这个参数在多次尝试下未能成功。同时,通过往运行的界面窗口中加入视频监控是可以成功的,查看正在运行窗口ID的Shell指令为xwininfo。
//展开视频
#define VIDEO_0 /dev/video0
#define VIDEO_1 /dev/video1
str1 = "mplayer -tv driver=v4l2:device="+(QString)VIDEO_0;
str2 = "mplayer -tv driver=v4l2:device="+(QString)VIDEO_1;
mstr = ":noaudio:input=2:norm=I:outfmt=I420 tv:// -wid ";
ws1 = QString::number(w1->winId());
ws2 = QString::number(w2->winId());
p_1->start(str1+mstr+ws1);
p_2->start(str2+mstr+ws2);
就这么简单,开启的指令为-tv,嵌入界面的指令为-wid,获得界面id,作为-wid的参数即可,注意I与L的区别,有时慌乱中容易出现很诡异的错误,转了一圈又回到原点,调代码就是在转圈圈前进的过程。