2017-10-31 4 views
0

Dies ist für eine Aufgabe Ich bin nicht auf der Suche nach Ihnen, um mir die Antwort vorzuschlagen. Ich brauche nur jemanden, der mich in die richtige Richtung weist, vielleicht mit einer oder zwei Zeilen Beispielcode.Linux & C: Wie man Datei lesen Priorität in Multi-Prozess-Programm beim Aufzeichnen von mp4-Dateien

Ich muss herausfinden, wie Sie die Priorität einer Aufnahme MP4-Dateien in meinem Programm einstellen. Auf den Punkt:

Ich versuche, von drei Kameras (1-HD und 2 analoge Kameras) gleichzeitig aufzunehmen und seine TAR-Datei nach jeder Aufnahme der Dauer 60 Sekunden zu erstellen.

Nachdem ich eine Reihe von Datensätzen abgeschlossen habe, targe ich diese Dateien. dabei mache ich Frame-Überspringen in nur HD-Kamera, bleiben 2 analoge Kameras sind in Ordnung.Hinsichtlich habe ich beschlossen, hohe Priorität für die Aufnahme und niedrige Priorität für das Tarieren dieser Dateien.

bitte schlagen Sie mir einige Ideen vor, um die Priorität einzustellen, die den Rahmensprung vernachlässigt.

Jede Hilfe/Anleitung wird geschätzt :)

+0

Ich vermute, dass Sie Problem nicht durch Prioritätsoptimierung gelöst werden. Brauchen Sie Code/Design. –

Antwort

0

Sie werden wahrscheinlich diese kämpfen, um zu tun, um die Standard-Round-Robin-Zeit mit Scheduler in Linux zu teilen. Ein Ansatz könnte darin bestehen, die "Echtzeit" -Scheduler-Richtlinien für die Videocodierungs-Threads zu verwenden und die Dateien in einem Thread unter Verwendung des Standard-Schedulers zu tarieren. Siehe sched_setscheduler.

+0

Nicht überzeugt - Ich vermute, OP macht hauptsächlich I/O. –

+0

Die Frage schlägt vor, dass keine Frames fallen gelassen werden, bis die Dateiarchivierung gestartet wird. Wenn die Videoaufnahmethreads also SCHED_RR oder SCHED_FIFO ausgeführt werden, wird verhindert, dass sie während der Verarbeitung ausgelassen werden. Dies kann bedeuten, dass der Archivierungsprozess die Verarbeitungszeit verkümmert und nicht abgeschlossen wird, bevor die nächste Datei für die Archivierung bereit ist, aber ohne ein Experiment auszuführen, ist es unmöglich zu sagen. –