diff --git a/recording/encoders/encoder.cpp b/recording/encoders/encoder.cpp index 2b2b58a..481ba40 100644 --- a/recording/encoders/encoder.cpp +++ b/recording/encoders/encoder.cpp @@ -145,6 +145,7 @@ bool Encoder::end() { if (!success) { goto cleanup; } + avcodec_send_frame(out->enc, NULL); int ret; AVPacket pkt; pkt.size = 0; diff --git a/recording/recordingformats.cpp b/recording/recordingformats.cpp index 115dcf1..b1e24c3 100644 --- a/recording/recordingformats.cpp +++ b/recording/recordingformats.cpp @@ -31,7 +31,7 @@ RecordingFormats::RecordingFormats(formats::Recording f) { path = tmpDir.absoluteFilePath("res." + formats::recordingFormatName(f).toLower()); finalizer = [&] { delete enc; - if (interrupt) { + if (interrupt || !frameAdded) { tmpDir.removeRecursively(); return QByteArray(); } @@ -66,6 +66,7 @@ RecordingFormats::RecordingFormats(formats::Recording f) { }; consumer = [&](QImage img) { if (!interrupt) try { + frameAdded = true; enc->addFrame(img); } catch (std::runtime_error e) { // notifications::notify("KShare Video Encoder Error", e.what(), diff --git a/recording/recordingformats.hpp b/recording/recordingformats.hpp index 433622a..2c9e50d 100644 --- a/recording/recordingformats.hpp +++ b/recording/recordingformats.hpp @@ -31,6 +31,7 @@ private: QString path; Encoder *enc = NULL; bool interrupt = false; + bool frameAdded = false; QString anotherFormat; };