QT的QProcess 如何执行命令行?这个命令行中的参数中有双引号和中文。
QT框架。
下面这样的命令如何用QProcess 来调用?
ffmpeg -f gdigrab -r 25 -video_size 1366x768 -i desktop -f dshow -list_devices 0 -i video="Integrated Webcam":audio="麦克风 (Realtek Audio)" -filter_complex "[0:v] scale=1366x768 [desktop]; [1:v] scale=192x108 [webcam]; [desktop][webcam] overlay=x=W-w-50:y=H-h-50" d:\output8.mp4
上面这条命令本生是没有问题的,在windows的cmd下可以正常执行。
QProcess p(0);
p.start("ffmpeg -f ........此处即为上面那个命令.......");
但在QT中用QProcess始终没有成功。当我把含有双引号和中文的部分参数去掉后,可以成功运行命令。一旦参数含有双引号,就运行失败。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以前用的一段代码
Qt4的文档里边明确说过(Qt5没有关注过),如果参数带引号,你用QProcess的时候,三个引号代表一个参数里边的引号
如果编译器支持C++11的化,可以试试这样写你的命令行:R"xxx(将这句中文替换为你要执行的命令行)xxx"
即字符串左边用Rxxx"(包裹,右边用)xxx"包裹,其中xxx可以替换为任意你的命令行中不存在的字符串
如果要处理中文,VS下(源码是BGK之类的)则可以用QString::fromLocal8Bit(R"(将这句中文替换为你要执行的命令行)");
如果是QtCreator下(也就是源码是UTF8格式的时候)用QString::fromUtf8(R"(将这句中文替换为你要执行的命令行)")