Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Andere";
Aktuelles Archiv: 2017.03.26;
Herunterladen: [xml.tar.bz2];

Nach unten

Video-Stream-Pufferorganisation Finden Sie ähnliche Zweige


d2pak ©   (2016-03-28 20:14) [0]

Guten Tag. Es besteht die Aufgabe, einen zyklischen Puffer von Videostream-Frames von einer USB-Kamera einer bestimmten Größe zu implementieren. Zum Beispiel unsere FPS = 30, VideoDuration = 5000 ms. (d. h. 5 Sekunden). Und das zeigt, dass 150-Frames im Puffer ankommen, wenn der 151-Frame ankommt, wird er ebenfalls an den Anfang geschrieben, aber der 1-Frame selbst wird gelöscht usw. Sagen Sie mir, welche Arten von Pufferstapeln zu verwenden sind (FIFO, ...), welche Algorithmen zu verwenden sind, wie Callback-Frames richtig organisiert werden? Vielen Dank im Voraus.



Kilkennycat ©   (2016-03-28 23:01) [1]

CreateStreamBuffer (); while (nicht Stop) { GetFrame (); If (PositionStreamBuffer> = StreamBufferSize) PositionStreamBuffer = 0; WriteStreamBuffer (); }
Das ist der ganze Algorithmus.



d2pak ©   (2016-03-29 08:53) [2]

ja danke es ist nur nicht klar, warum PositionStreamBuffer = 0; weil zum beispiel:
           
begin buffer size = 8 end
/ -------------- ^ -------------- \
- + - + - + - + - + - + - + - + - + - + - + -
23|24|25|26|27 |28|29|30|31|32 |33|34
- + - + - + - + - + - + - + - + - + - + - + -
<== Rahmenrichtung ==



DVM ©   (2016-03-29 10:24) [3]

Warum wird all diese Pufferung benötigt? Praktische Bedeutung? Vorspeicher zur Bewegungserkennung?
Normalerweise muss die Ansicht nicht gepuffert werden, da Es ist in der Natur diskret, was man nicht über Klang sagen kann.
Im Wesentlichen das übliche TQueue oder dessen Nachfolger mit einer überlappenden Push-Methode.



d2pak ©   (2016-03-29 11:56) [4]


> DVM © (29.03.16 10: 24) [3]

Es gibt ein Programm, das derzeit einen Umlaufpuffer wie folgt implementiert:
Eine Datei wird innerhalb von 1 Minuten geschrieben, dann wird die zweite gespeichert und geschrieben (auch während der 1 Minuten), dann die dritte ... Wenn die vierte erstellt wird, wird die erste gelöscht. Es ist eine Art Ereignis aufgetreten. Diese Dateien werden in eine Videodatei (2-, 3- und 4-Fragmente) geklebt. Das Problem besteht jedoch darin, dass an den geklebten Stellen eine Pause von ein bis zwei Sekunden auftritt. Dateien schließen. In dieser Hinsicht wird das gesamte Video mit "Sprüngen" an den Stellen des Klebens erhalten.
Es gibt eine Idee, den oben beschriebenen Puffer für Rahmen so zu organisieren, dass es keine derartigen Sprünge gibt. Vielen Dank.



d2pak ©   (2016-03-29 11:58) [5]


> Praktische Bedeutung?

Die tatsächliche praktische Bedeutung ist oben beschrieben.



d2pak ©   (2016-03-29 12:00) [6]


> Es gibt eine Idee, den oben beschriebenen Puffer für Frames zu organisieren,
> damit es keine solchen sprünge gibt.

so dass immer zum richtigen Zeitpunkt der Puffer in eine ganze Datei entladen werden kann.



DVM ©   (2016-03-29 13:08) [7]


> d2pak © (29.03.16 11: 56) [4]


> Etwas ist passiert, diese Dateien sind zu einer zusammengeklebt
> Videodatei (2-, 3- und 4-Fragmente)

Ich schätze, das bedeutet, dass es sich um eine Voraufnahme handelt.


> an Klebestellen mit einer Wahrscheinlichkeit von ein bis zwei Sekunden
> Aufgrund der für die Nutzung aufgewendeten CPU-Zeit
> Ressourcen zum Erstellen / Schreiben / Schließen von Dateien.

Wenn Sie versuchen, dies im selben Stream zu tun, der das Video empfängt, gibt es natürlich Lücken, wenn sich ein separater Stream mit dem Kleben befasst, sollte es kein Problem geben, wenn es eines gibt, dann gibt es wahrscheinlich eine Art logischen Fehler, oder als Option für die Geschwindigkeit Die Festplatte reicht nicht aus, um Videos parallel in eine Datei aufzunehmen und Fragmente anderer Dateien zusammenzufügen. In diesem Fall hilft das Puffern, aber nur, wenn der Klebevorgang selten ist und der angesammelte Puffer in Abwesenheit Zeit hat, auf die Festplatte zu spülen.



d2pak ©   (2016-03-29 13:16) [8]


> Der akkumulierte Puffer hat Zeit, auf die Festplatte zu leeren.

und wenn nicht der aktuelle Puffer, sondern nach dem Ereignis sein Speicherauszug, dann speichern Sie den Speicherauszug?



DVM ©   (2016-03-29 13:21) [9]


> d2pak © (29.03.16 13: 16) [8]

Ich habe den Satz nicht verstanden



d2pak ©   (2016-03-29 13:37) [10]


> Pufferung hilft in diesem Fall nur, wenn
> wenn der Klebevorgang selten und in Abwesenheit vonstatten geht
> Der akkumulierte Puffer hat Zeit, auf die Festplatte zu leeren.

Um zu verwalten, auf die Festplatte geleert werden, wenn zum erforderlichen Zeitpunkt ein Puffer-Dump im Speicher erstellt werden soll, um nicht die Ressourcen des Hauptpuffers wegzunehmen und nicht zu verwenden, sondern nur den Dump zu speichern.



d2pak ©   (2016-03-29 13:38) [11]

Ich bin ein Unterstützer der Organisation eines Frame-Puffers, aber wenn dies nicht realistisch ist, warum dann?



DVM ©   (2016-03-29 14:46) [12]


> Ich bin ein Unterstützer der Organisation eines Frame-Puffers, aber wenn ja
> nicht real, warum?

Warum nicht wirklich, wirklich ganz, daran ist nichts Besonderes.



NoUser ©   (2016-03-29 14:51) [13]

d2pak, Sie kommen auf Code, Ihre Gedanken, Ihre Behauptung des Problems - sie werden Sie leiten!

Frage:
Was ist "geschrieben" und was kann die Ausführungszeit der "weiter gespeicherten" Prozedur sein, damit
цикл
> Eine Datei wird für 1 min. Geschrieben und dann gespeichert
Daten nicht verloren?

Threat.
Und dann "warum PositionStreamBuffer = 0?" es geht nur um "Ich möchte nicht lernen - ich gehe zu Programmierern", und das ist, wie Sie wissen, eine Sünde.))



Kilkennycat ©   (2016-03-29 16:41) [14]

So wie ich es verstehe, funktioniert der Gedanke in Bezug auf physische Verschiebung, a la Register, daher das Missverständnis. Hardware kann jedoch auch große Volumes schnell verschieben.
Nur dieses nafig ist nicht nötig. Alle physischen "ungeschalteten" werden von der Software maskiert.



Pavia ©   (2016-03-30 11:59) [15]


> Wenn Sie versuchen, dies im selben Thread zu tun, der dauert
> video, dann wird es natürlich lücken geben, wenn ein separater stream läuft
> wird geklebt, dann sollte es kein Problem geben wenn
> aber es ist, dann gibt es wahrscheinlich eine Art logischer Fehler,
> na ja, oder als option reicht die festplattengeschwindigkeit für parallel nicht aus
> Video in eine Datei aufnehmen und Fragmente anderer Dateien zusammenfügen.
> Pufferung hilft in diesem Fall nur, wenn
> wenn der Klebevorgang selten und in Abwesenheit vonstatten geht
> Der akkumulierte Puffer hat Zeit, auf die Festplatte zu leeren

Im Gegenteil, ich würde den 1-Stream verlassen. Es ist einfacher. Synchronschaltung. Alle Aufgaben müssen in 30 ms abgeschlossen sein. Das heißt summiere alle Aufgaben in 30 Sekunden. Teilen Sie also die große Aufgabe in kleine auf. Und der Profiler zeigt immer an, was genau verlangsamt und wo man es festzieht.

Vorausgesetzt, die durchschnittliche Festplatte hat 80 IOPS.
Primitives Schema.
1: Das Bild wurde aufgenommen.
2: Rahmen zum Kleben gezählt
3: Der Rahmen zum Kleben wurde aufgezeichnet.
Benötigt 90 IOPS und wird natürlich langsamer. Ein wenig abschließen und es wird Ordnung geben.



DVM ©   (2016-03-30 14:15) [16]


> Pavia © (30.03.16 11: 59) [15]


> Benötigt 90 IOPS

Durch das Zwischenspeichern des Betriebssystems wird die Anzahl der erforderlichen IOPS verringert



Seiten: 1 ganze Branche

Forum: "Andere";
Aktuelles Archiv: 2017.03.26;
Herunterladen: [xml.tar.bz2];

nach oben









Speicher: 0.63 MB
Zeit: 0.019 c
15-1459185260
d2pak
2016-03-28 20:14
2017.03.26
Video-Stream-Pufferorganisation


4-1282048057
mc.fly
2010-08-17 16:27
2017.03.26
Wie erstelle ich ein Pufferbild im Speicher? Ohne VCL.


4-1282284939
Dmitriy
2010-08-20 10:15
2017.03.26
die Inschrift neu zeichnen


2-1437734169
Koko-xnumx
2015-07-24 13:36
2017.03.26
PC-Beschreibung


15-1459036034
Kilkennycat
2016-03-27 02:47
2017.03.26
Ein guter Nachahmerroboter. und der Zweck im Leben ist auch Identität.





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarian katalanisch Chinesisch (vereinfacht) Chinesische Tradition) kroatisch Tschechisch Dänisch Dutch Englisch estnisch Philippinisch Finnish Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italian Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegian
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Swedish Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch