Ich schreibe eine Software, die ffmpeg ausgiebig verwendet, und es ist multi-threaded mit mehreren Klasseninstanzen.
Wenn die Netzwerkverbindung ausfällt, bleibt ffmpeg beim Lesen hängen. Ich habe eine Methode gefunden, um einen Rückruf zuzuweisen, den ffmpeg regelmäßig auslöst, um zu prüfen, ob er abbrechen soll oder nicht:
%Vor%...
%Vor%Das ist alles in Ordnung, aber nirgends im Web kann ich finden, was * ctx enthält und wie man bestimmt, ob der Callback 1 oder 0 zurückgeben soll. Ich kann kein statisches "abbrechen" Flag zuweisen, da die Klasse viele Instanzen hat. Ich kann den Code auch nicht debuggen, da aus irgendeinem Grund Visual Studio sich weigert, einen Breakpoint auf die Rückgabe 0 zu setzen; Zeile, die behauptet, dass kein ausführbarer Code dem Ort zugeordnet ist. Irgendwelche Ideen?
In der Dokumentation zu ffmpeg gefunden:
Während Callback-Operationen wird Callback mit opaque als aufgerufen Parameter. Wenn der Rückruf 1 zurückgibt , wird der Blockiervorgang ausgeführt abgebrochen werden.
Hier ist Deklaration int_cb Variable vom Typ AVIOInterruptCB struct aus Ihrem Code:
%Vor% Sie haben den undurchsichtigen Parameter als NULL
deklariert.
Ich würde empfehlen, den Initialisierungscode wie folgt neu zu schreiben:
%Vor% Sie können auf die formatContext-Instanz in interrupt_cb
: