Hallo zusammen! Mein erster Beitrag auf Mikrokontroller.net, ich bin sehr gespannt ob mir wer weiterhelfen kann: Ich möchte gerne ein Video abspielen, das mir zu den Zeitpunkten x und y ein Ausgangssignal (jedweder Art) zur Verfügung stellt, das ich zum triggern einer Aktorik (per Arduino) weiterverarbeiten kann. Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem Erfolg verbunden. Es ist zu hörbar und zu unsicher in der Erkennung. Der zweite Ansatz ist nun, die Abspielzeit des Videos zu nutzen. Nach etwas Recherche ist mir dabei der Timecode aufgefallen, der sich sogar framegenau nutzen lässt. Kennt ihr eine Möglichkeit, diesen Timecode "live" bei der Videowiedergabe auf der RS232 o.ä. darzustellen? Zielhardware kann ein Mini-PC mit Windows oder auch ein Raspberry sein. Vielen Dank schon mal für mögliche Antworten und Hilfe! :) Andi
Probiers mal mit ffplay. Das ist ein Consolen Player aus dem ffmpeg Paket. (für Linux und Windows verfügbar). Gibt den Timecode in der Console aus. Das kannst du ggf per Pipe an die Schnittstelle weiterleiten.
Andi M. schrieb: > Kennt ihr eine Möglichkeit, diesen Timecode "live" bei der > Videowiedergabe auf der RS232 o.ä. darzustellen? Willst du da den Timecode jedes Frames übertragen, nur um dann ein- oder zweimal im ganzen Video drauf zu reagieren? Ich hätte mir da wohl was mit avisynth auf dem Abspielcomputer gebastelt, das dann an den gewünschten Stellen eine Aktion triggert. Oliver
Andi M. schrieb: > Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem > Erfolg verbunden. Es ist zu hörbar und zu unsicher in der Erkennung. Zeig mal. Wäre das erste, was mir einfiele. einen kurzen 16Khz Burst mit informationen über die Phasenlage(0/180°) hört doch niemand. Was hast Du denn da gebaut gehabt?
Ergänzung zu ffplay Theoretisch könnte man Steuercodes als Untertitel in das Video einbauen. Ggf kann man die Steuerbefehle des Arduinos direkt integrieren und spart den Umweg über Timecodes. Untertitel einbauen ist einfach. Weiss allerdings nicht ob ffplay auch Untertitel auf die Console ausgeben kann.
Alternativ mit https://processing.org/ einen Video-Player mit Arduino-Anbindung zusammenstöpseln. Hier ist Beispiel-Code https://processing.org/tutorials/electronics/#code https://processing.org/tutorials/video/#recorded-video
Andi M. schrieb: > Ich möchte gerne ein Video abspielen, das mir > zu den Zeitpunkten x und y ein Ausgangssignal (jedweder Art) zur > Verfügung stellt, das ich zum triggern einer Aktorik (per Arduino) > weiterverarbeiten kann. Womit genau willst du das Video abspielen? > Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem > Erfolg verbunden. Es ist zu hörbar und zu unsicher in der Erkennung. Dann hast du was falsch gemacht. DTMF z.B. kann leise bis knapp über die Hörschwelle machen und ist trotzdem mit recht höher Sicherheit erkennbar. Natürlich muss dafür der Empfänger ziemlich aufwendig sein. > Der > zweite Ansatz ist nun, die Abspielzeit des Videos zu nutzen. Nach etwas > Recherche ist mir dabei der Timecode aufgefallen, der sich sogar > framegenau nutzen lässt. Man könnte als auch einfach die Frames zählen, anstatt aufwendig den Timecode aus dem Video zu extrahieren, meinst du nicht? Wie auch immer: der entscheidende Punkt ist, womit genau abgespielt werden soll. Daraus ergibt sich, an welche Infos man herankommen kann. Und daraus ergibt sich, was man wie in das Video als Schaltbefehl packt (oder ob man einfach eine sowieso bestehende Eigenschaft des Videos benutzt).
Erstmal vielen Dank für die Antworten, das geht genau in die Richtung die mir hilft! :) Das Video kann prinzipiell mit allem abgespielt werden, ich muss es nur per HDMI vollformatig herrausschicken können. Mit Processing: Klingt sehr gut! Der Usecase wäre: Taste drücken, Video öffnet sich vollformatig auf dem HDMI Ausgang und nach genau x Sekunden Spielzeit sendet Processing dann den Trigger auf der COM raus. Wäre sowas möglich? Mit ffplay und Untertitel: Klingt ebenfalls gut! Ich komm nur mit der Doku nicht dahinter, ob der Untertitel auf der Console ausgegeben werden kann.. Seh ichs nur nicht, oder geht das leider nicht? :/ Viele Grüße, Andi
:
Bearbeitet durch User
Moin, Frueher, als noch mehr Lametta war, war sowas prinzipiell einfacher. Heute, wo weniger Lametta aber dafuer viel mehr Audio/Videokompression ist, ist's etwas komplexer geworden. So klassische Sachen, wie SMPTE-VITC oder -LTC werden ueblicherweise nicht durch gaengige codecs mitkomprimiert, d.h. die sind dann einfach mal weg und der Decoder kann sie nicht mehr wieder dazuzaubern. Dafuer kann man in den ueblichen Containerformaten aber auch Daten ausser Audio/Video uebertragen, also z.b. auch Zeitinformationen. Wird also entscheidend sein, was du genau an AV-Material vorliegen hast und wie du das genau abspielen willst. Gruss WK
Die Funktion "MovieStatus()" in der Bibliothek "Movie" von PureBasic gibt die Framenummer zurück. Die serielle Schnittstelle kannst Du dann gleich auch ansprechen. Gruss Chregu
Andi M. schrieb: > Mit Processing: Klingt sehr gut! Der Usecase wäre: Taste drücken, Video > öffnet sich vollformatig auf dem HDMI Ausgang und nach genau x Sekunden > Spielzeit sendet Processing dann den Trigger auf der COM raus. Wäre > sowas möglich? Ja. Genau für Sowas ist Processing gemacht. Mach ein "Serial"-Objekt auf, mit port.available()/port.read() liest du von deinen COM, wenn das "Start"-Signal kommt: "movie.play()" (Falls der Start-Tastendruck auch über die Serielle kommt, ansonsten kannst du natürlich auch auf das Computer-Keyboard zugreifen.) https://processing.org/reference/libraries/serial/index.html Die "movie.time()"-Methode gibt den aktuell abgespielten Zeitpunkt zurück, in Sekunden als Float. Beim Überschreiten des gewünschten Zeitpunkts schickst du mit port.write("X") deinen Trigger. Wenn das ganze sowieso auf einem Raspi läuft: Du kannst in Processing auch direkt auf dessen GPIOs zugreifen. https://processing.org/reference/libraries/io/GPIO.html Wer Ähnlichkeiten zur Arduino-API entdeckt: Ja, da ist wohl ein Projekt vom anderen inspiriert worden.
:
Bearbeitet durch User
Timecode wird auf einer Tonspur als Bitgezappel aufgezeichnet. Ist auf dem Internet dokumentiert. Vorwaerts hoert es sich anders an wie rueckwaerts. Es aendern sich nur wenige Bits von Frame zu Frame. Beginne bei https://en.wikipedia.org/wiki/SMPTE_timecode https://en.wikipedia.org/wiki/Timecode
Andi M. schrieb: > Zielhardware Existiert die schon? Falls nicht, schau dich auch im professionelleren Bereich um. Da gibt es Videoplayer, die z.B. für Ausstellungen oder Live Performance genau solche Ausgänge und Fernsteuer-Funktionen bieten. Erstbester Treffer: https://www.thomann.de/de/blackmagic_design_hyperdeck_studio_hd_mini.htm
Andi M. schrieb: > Der erste Versuch, dafür die Tonspur zu nutzen war nur mit mäßigem > Erfolg verbunden. Dann könntest du das noch verfeinern. Schon vor 40 Jahren hat das funktioniert, im den/die Projektor(en) bei automatischen Live-Dia Shows zu steuern. MVF wäre eine Möglichkeit, um den Erfolg zu steigern.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.