From d66126adf3b42db362af22a097422f98a09818f5 Mon Sep 17 00:00:00 2001 From: kelteseth Date: Wed, 17 Oct 2018 20:41:07 +0200 Subject: [PATCH] Add more error checking --- ScreenPlay/src/create.cpp | 26 +++++++++++++++++++++++--- ScreenPlay/src/create.h | 3 +++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/ScreenPlay/src/create.cpp b/ScreenPlay/src/create.cpp index 0ecc4c8f..7e6550e6 100644 --- a/ScreenPlay/src/create.cpp +++ b/ScreenPlay/src/create.cpp @@ -102,14 +102,19 @@ bool Create::createWallpaperInfo(CreateWallpaperData& createWallpaperData) #endif pro.data()->start(); + emit createWallpaperStateChanged(Create::State::AnalyseVideo); pro.data()->waitForFinished(-1); + emit createWallpaperStateChanged(Create::State::AnalyseVideoFinished); QJsonObject obj; QJsonParseError err; QJsonDocument doc = QJsonDocument::fromJson(pro.data()->readAll(), &err); - if (err.error == QJsonParseError::NoError) { - obj = doc.object(); + if (err.error != QJsonParseError::NoError) { + emit processOutput("Error parsing ffmpeg json output"); + emit createWallpaperStateChanged(Create::State::AnalyseVideoError); + return false; } + obj = doc.object(); pro.data()->close(); // Get video length @@ -119,6 +124,8 @@ bool Create::createWallpaperInfo(CreateWallpaperData& createWallpaperData) if (!okParseDuration) { qDebug() << "Error parsing video length"; + emit processOutput("Error parsing video length"); + emit createWallpaperStateChanged(Create::State::AnalyseVideoError); return false; } @@ -161,6 +168,9 @@ bool Create::createWallpaperVideoPreview(CreateWallpaperData& createWallpaperDat qDebug() << createWallpaperData.length << createWallpaperData.framerate; QStringList args; + // args.append("-hide_banner"); + args.append("-loglevel"); + args.append("error"); args.append("-y"); args.append("-stats"); args.append("-i"); @@ -194,7 +204,17 @@ bool Create::createWallpaperVideoPreview(CreateWallpaperData& createWallpaperDat // }); processOutputTimer.data()->start(100); proConvertPreviewMP4.data()->waitForFinished(-1); - if (!proConvertPreviewMP4.data()->readAllStandardError().isEmpty()) { + if (proConvertPreviewMP4.data()->exitStatus() == QProcess::NormalExit) { + qDebug() << "normal exit"; + } else { + qDebug() << "crash exit"; + } + QString tmpErr = proConvertPreviewMP4.data()->readAllStandardError(); + if (!tmpErr.isEmpty()) { + qDebug() << tmpErr; + qDebug() << proConvertPreviewMP4.data()->readAllStandardOutput(); + qDebug() << proConvertPreviewMP4.data()->readAll(); + emit processOutput(tmpErr); emit createWallpaperStateChanged(Create::State::ConvertingPreviewVideoError); return false; } diff --git a/ScreenPlay/src/create.h b/ScreenPlay/src/create.h index d94f56f8..19567163 100644 --- a/ScreenPlay/src/create.h +++ b/ScreenPlay/src/create.h @@ -43,6 +43,9 @@ public: enum class State { Idle, Started, + AnalyseVideo, + AnalyseVideoFinished, + AnalyseVideoError, ConvertingPreviewImage, ConvertingPreviewImageFinished, ConvertingPreviewImageError,