return;
}
// Only output error data, make sure we don't block when proxy file already exists
- QStringList parameters = {QStringLiteral("-hide_banner"), QStringLiteral("-y"), QStringLiteral("-stats"), QStringLiteral("-v"),
- QStringLiteral("error")};
+ QStringList parameters = {QStringLiteral("-hide_banner"), QStringLiteral("-y"), QStringLiteral("-stats"),
+ QStringLiteral("-v"), QStringLiteral("error"), QStringLiteral("-protocol_whitelist"),
+ QStringLiteral("file,pipe")};
+
m_jobDuration = int(binClip->duration().seconds());
if (binClip->hasProducerProperty(QStringLiteral("kdenlive:camcorderproxy"))) {
// ffmpeg -an -i proxy.mp4 -vn -i original.MXF -map 0:v -map 1:a -c:v copy out.MP4
if (proxyParams.isEmpty()) {
// Automatic setting, decide based on hw support
proxyParams = pCore->currentDoc()->getAutoProxyProfile();
+ } else {
+ // Sanitize parameters
+ const QStringList blockedParams = {
+ QStringLiteral("attach"), QStringLiteral("metadata"), QStringLiteral("null"), QStringLiteral("dump"),
+ QStringLiteral("concat"), QStringLiteral("safe"), QStringLiteral("ladspa"), QStringLiteral("protocol_whitelist")};
+ for (auto &b : blockedParams) {
+ if (proxyParams.contains(b)) {
+ // Unwanted param found, discard parameters
+ proxyParams = pCore->currentDoc()->getAutoProxyProfile();
+ break;
+ }
+ }
}
int proxyResize = pCore->currentDoc()->getDocumentProperty(QStringLiteral("proxyresize")).toInt();
if (!proxyParams.contains(QLatin1String("mjpeg")) && !proxyParams.contains(QLatin1String("mpeg2video"))) {