Dlaczego zamraża mi program na 30 sekund? ( C++, Qt, Ffmpeg )

0

Dzień dobry, ma ktoś jakiś pomysł dlaczego aplikacja zamraża się na 30s po włączeniu nagrywania? Nagrywa w czasie tych 30 sekund, ale potem sobie je odcina na końcu filmu. ( film kończy się 30 sekund za wcześnie ). Podaję kod ( tak, wiem że syf ).

kod: https://github.com/OurProject[...]/main/PlazaPCO/mainwindow.cpp

6

ma ktoś jakiś pomysł dlaczego aplikacja zamraża się na 30s

QProcess::waitForFinished ma domyślnie ustawiony timer na 30sec. Przez ten czas wątek w którym to zawołasz zamrozi się na 30s, a że wołasz to z wątku głównego to aplikacja stoi.

0
several napisał(a):

https://doc.qt.io/qt-5/qprocess.html#waitForFinished ma domyślnie ustawiony timer na 30sec.

A wiesz dlaczego może ucinać mi nagranie?

5

A wiesz dlaczego może ucinać mi nagranie?

Kod, który napisałeś będzie nagrywać tylko 30 sekund, bo taki dałeś timer w QProcess. Jak chcesz nagrywać dłużej to albo daj dłuższy timer albo zrób to tak, jak powinieneś to zrobić czyli podepnij się pod sygnały kończące jak finished i zatrzymaj nagranie wtedy gdy faktycznie się skończy. Wtedy te twoje flagi ja bool recording = false; będą miały jakiś sens. Poza tym, waitForFinished zwraca info czy proces faktycznie się skończył czy nie, całkowiecie ingorujesz tą informacje.

0
several napisał(a):

A wiesz dlaczego może ucinać mi nagranie?

Kod, który napisałeś będzie nagrywać tylko 30 sekund, bo taki dałeś timer w QProcess. Jak chcesz nagrywać dłużej to albo daj dłuższy timer albo zrób to tak, jak powinieneś to zrobić czyli podepnij się pod sygnały kończące jak finished i zatrzymaj nagranie wtedy gdy faktycznie się skończy. Wtedy te twoje flagi ja bool recording = false; będą miały jakiś sens. Poza tym, waitForFinished zwraca się info czy proces faktycznie się skończył czy nie, całkowiecie ingorujesz tą informacje.

Nie, nagrywa więcej niż 30 sekund. W zależności co ustawię w waitForFinished to mi nagrywa krócej lub dłużej.

1

W zależności co ustawię w waitForFinished to mi nagrywa krócej lub dłużej.

Czyli jak ustawisz 50sekund to nagrasz więcej materiału niż wtedy gdy masz ustawione 30sekund? Całkiem logiczne zachownie nie uważasz? Ma to też sens, że mając ustawione 30sekund nie nagrasz dokładnie tyle, w końcu modelujesz proces z zewnątrz a nie a nie ffmpeg bezpośrednio - https://stackoverflow.com/que[...]seconds-of-audio-using-ffmpeg

Już Ci napisałem, jak powienieneś do tego podejść.

0
several napisał(a):

W zależności co ustawię w waitForFinished to mi nagrywa krócej lub dłużej.

Czyli jak ustawisz 50sekund to nagrasz więcej materiału niż wtedy gdy masz ustawione 30sekund? Całkiem logiczne zachownie nie uważasz? Ma to w sumie też jakiś sens, że mając ustawione 30sekund nie nagrasz dokładnie tyle, w końcu modelujesz proces z zewnątrz a nie a nie ffmpeg bezpośrednio - https://stackoverflow.com/que[...]seconds-of-audio-using-ffmpeg

Już Ci napisałem, jak powienieneś do tego podejść.

Jak napisałem w komentarzu wyżej jak ustawię waitForFinished na 1 to nagrywa mi pół materiału. czyli jak nagram 10 minutowy film, to dostanę 5 minutowy output. Mogę zaprezentować. Wiem że napisałeś i postaram się to wdrożyć w życie.

1

jak ustawię waitForFinished na 1 to nagrywa mi pół materiału. czyli jak nagram 10 minutowy film, to dostanę 5 minutowy output

A to nawet ciekawe, nie umiem tego wyjaśnić, nie znam się na ffmpeg w ogóle, a QProcess użyłem kilka razy na studiach siedem lat temu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0