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.62 MB
Zeit: 0.018 c
15-1459502027
Ksergey
2016-04-01 12:13
2017.03.26
Windows "Talker": Durch die API eine männliche oder weibliche Stimme lernen?


2-1437985170
Grau-grau
2015-07-27 11:19
2017.03.26
Delphi XE8-Projektfehler beim Erstellen der VCL-Formularanwendung


2-1396021466
DQ
2014-03-28 19:44
2017.03.26
Verwenden der Datentypen Enumeration und Set


15-1458782603
Kilkennycat
2016-03-24 04:23
2017.03.26
Verbraucherschutz


4-1282063966
kolj
2010-08-17 20:52
2017.03.26
So schließen Sie alle Instanzen des Programms auf einem Terminalserver.





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarisch katalanisch Chinesisch (vereinfacht) Chinesisch (traditionell) kroatisch Tschechisch Dänisch Niederländisch Englisch estnisch Philippinisch Finnisch Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italienisch Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegisch
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Schwedisch 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