c++ 如何将多参数命令作为单个字符串传递给QProcess?

r1zhe5dt  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(227)

以前,我做过:

Qprocess* dlvid = new QProcess;
//command to start
QString ffmpegmerge = "ffmpeg -i myvid.mp4 -i myaudio.m4a -c copy -movflags faststart mergevid";
//starting the process
dlvideo->start(ffmpegmerge);

而且它可以很好地使用关于已弃用的QProcess::start的警告。
现在我使用了已弃用的dlvideo->start(ffmpegmerge)(我想我遵循了qt.doc的新QProces::start方法)

dlvideo->start("ffmpeg", QStringList() << "-i" << "myvid.mp4" << QStringList() << "-i" << "myaudio.m4a" << QStringList() << "-c" << "copy" << QStringList() << "-movflags" << "faststart" << mergevid);

而且效果很好,没有clazy警告。
在我的程序myvid,myaudio,mergevid是一些之前定义的QString,但它不是这个问题的对象。
我想知道是否可以将所有参数连接到一个QString中,以如下方式开始

dlvideo->start("ffmpeg", QString() << "Here I want all arguments in one shot" << mergevid;
kiayqfof

kiayqfof1#

看起来您只是想找到一种方法,将命令原样传递给QProcess,只要它不生成警告。
你可以像使用start()一样使用QProcess::startCommand:

process.startCommand("ffmpeg -i myvid.mp4 -i myaudio.m4a -c copy -movflags faststart mergevid");

不会产生弃用警告,因为它是在Qt6中引入的。

相关问题