| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 5.626
|
Hallo zusammen! Ich versuche gerade eine framebasierende Animation (die ich aber interpolieren kann) mit ein extern geladen Video zu synchronisieren und bin dabei auf folgendes Problem gestoßen: Obwohl das Video ohne sichtbaren Ruckler abgespielt wird, scheint der in netStream.time gespeicherter Time-Code "zu ruckeln". Er bleibt immer wieder für eine gewisse Zeit stehen. Ich habe hier mal die durch getTimer() ermittelten Werte dagegengesetzt um den Effekt zu verdeutlichen: Code: stream | getTimer/1000 | differenz --------------------------------------------- ... 28.459 | 60.79 | -32.331 28.501 | 60.829 | -32.328 28.501 | 60.869 | -32.367999999999995 28.544 | 60.909 | -32.364999999999995 28.587 | 60.949 | -32.361999999999995 28.651 | 60.989 | -32.337999999999994 28.693 | 61.029 | -32.336 28.736 | 61.069 | -32.333 28.779 | 61.109 | -32.33 28.779 | 61.149 | -32.370000000000005 28.779 | 61.189 | -32.41 28.885 | 61.246 | -32.361000000000004 28.885 | 61.27 | -32.385000000000005 28.971 | 61.309 | -32.337999999999994 29.013 | 61.349 | -32.336 ... Ich wäre Euch für jeden Tipp dankbar!
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (15-07-2010 um 17:27 Uhr) |
| | |
| | #3 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 5.626
|
Daran liegt's leider nicht. Meine Framerate ist 25 (genauso wie die des Videos); ich hab's aber auch schon mit 50 oder 60 versucht. Leider ändert das alles nichts, weil netStream.time kein kontinuierliches Zeitsignal zu geben scheint, während das Video läuft. Auch ein Performance-Ruckeln kann es eigentlich nicht sein, da das Video flüssig läuft und getTimer() und netStrem.time eigentlich unabhängig davon sein sollten. Gibt es vielleicht noch eine andere Methode, an den Timecode des Videos zu kommen?
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #4 (permalink) |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.238
|
also ich weiß ehrlich gesagt nicht, ob der timecode ganz exakt ausgegeben wird. wollte damit eigentlich nur darauf hindeuten, dass die frames der bühne und die des videos überhaupt nix miteinander zu tun haben. du kannst bspw. die fps der stage auf 1 stellen und das video läuft trotzdem flüssig. sogesehen kann es immer wieder sein, dass du frames des videos verpasst, oder aber mehrfach bei onenterframe siehst. ich glaube nicht, dass man die beiden vollkommen synchron bekommt. ich würde die fps der stage möglichst hochstellen und nur bei bedarf (anderer timecode) die bühne aktualisieren. bzw. man könnte ja auch mit einem timer oder interval abfragen ob sich der timecode geändert hat. mfg sx edit: ach jetzt - ne er gibt es nicht aktuell, sondern videoFrameWeise... das mein ich |
| | |
| | #5 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 5.626
| @shin10: Mir ist schon klar, dass die Framerate eines Videos von der Framerate der übrigenen swf abgekoppelt ist. Das ist aber nicht das Problem, da ich die Animation wie gesagt per Script interpoliere und so den passenden Zustand für jeden Zeitpunkt herstellen kann. Dafür brauch ich aber ein verlässliches Zeitsignal. Und das hab ich leider nicht, wenn die time-Property eines kontinuierlich ablaufenden NetStreams zu 3 verschiedenen Zeitpunkten denselben Wert hat (s.o.).
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! Geändert von Martin Kraft (16-07-2010 um 14:31 Uhr) |
| | |
| | #6 (permalink) |
| BenutzerID: 436 Registriert seit: Jun 2001 Ort: Ruhrgebiet
Beiträge: 2.332
|
Kann das sein, dass der nur die Zeiten der Keyframes ausgibt? Du kannst ja auch nur die Keyframes anspringen, wenn du mit seek auf der Videozeitleiste unterwegs bist.
__________________ Showreel 2011 | expert.ch | Provinzial - Kompetenz Kiel | ElectronicPartner | Vodafone 553 Wir suchen PHP-, iOS- und Androidentwickler, Screendesigner und AfterEffects & 3D Artists! |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Oct 2007 Ort: Kölle
Beiträge: 1.114
|
Jau - ist auch meine Vermutung. Es wird der nächstliegenste Keyframe-TimeCode ausgegeben. Versuch doch mal, beim Konvertieren/Erzeugen der Videodateien den Keyframeinterval auf 1 zu stellen. Ich hab ns.time mal mit einem Timer alle 100ms ausgeben lassen und nach ca.10 sekunden tauchten zumindest keine gleichen werte mehr auf, sondern zumindest immer ansteigend... Wieviel Asynchronität wäre denn noch tolerabel? Je nachdem könntest z.B. alle 2 sec einen cuepoint setzen und den dann direkt anspringen bzw. kontrollieren ob alles noch synchron läuft LG ANdré
__________________ Die Hoffnung stirbt zuletzt. Aber sie stirbt. |
| | |
| | #8 (permalink) |
| q00bar @ work Registriert seit: May 2010
Beiträge: 88
|
Wollt grad das gleiche schreiben - ich würde da die Keyframerate beim rendern erhöhen, vllt. sogar am besten in jedes Frame rein. Konnte so in meinem letzten Projekt auch das "Haken" des netVideoStreams beheben. Sollte einen Versuch wert sein. Mfg LilaQ |
| | |
| | #9 (permalink) |
| Flash-Designer Registriert seit: May 2006 Ort: Wiesbaden
Beiträge: 5.626
|
Danke für den Tip mit dem Keyframeinterval. Könnte mir durchaus vorstellen, dass es etwas bringt, wenn man mit deutlich mehr Keyframes zu arbeiten. Allerdings würde das auch die Datenrate erhöhen und/oder die Video-Qualität veringern. Da beides in diesem Projekt schon ziemlich am Anschlag ist, steht das für den Kunden aber leider nicht zur Diskussion.. Die Qualität ist übrigens auch der Grund, weshalb es ein h264/mp4 sein muss, dass laut Flash nicht für die Einbettung in eine swf geeignet ist. Eine Synchronisierung über die Zeitleiste scheidet also auch aus... Aber ich habe mittlerweile auch einen Workaround gefunden, der ganz gut funktioniert: Ich synchronisiere die Animation nicht direkt mit dem Video-Timecode sondern mit einem geglätten Timecode, der die Aussetzer ausbügelt. Diesen setz ich nur dann hart auf stream.time, wenn eine gewisse Abweichungstoleranz überschritten wird (.9 Sekunden), ansonsten wird er entsprechen der seit der letzten Aktualisierung vergangenen Zeit (getTimer()) hochgezählt. Das schließt einzelne Ruckler zwar nicht ganz aus, minimiert sie jedoch erheblich und sorgt so für eine glatte Animation... Auch wenn mein akutes Problem damit gelöst ist, interessiert es mich auch weiterhin...
Nochmal vielen Dank an alle, die mir hier weitergeholfen haben!
__________________ Viele Grüße // Martin Martin Kraft // Interaktionsdesign Hilfreiche Websites: // Hilfe zur Adobe Flash Plattform // ActionScript 2 Referenz // ActionScript 3 Referenz // ActionScript 3 Arbeitshandbuch // weitere Flash Ressourcen Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da! |
| | |
| | #10 (permalink) |
| q00bar @ work Registriert seit: May 2010
Beiträge: 88
|
Ich kann nur aus eigener Erfahrung heraus sagen, dass z.Bsp. auch .seek(), was ja laut Manual auch gerne mit Millisekunden arbeitet, immer nur zum nächstgelegenen Keyframe springt. Ist für eine Arbeit bei der man ein sehr genaues / framebasiertes Anspringen eines Videos benötigt, sehr unvorteilhaft, weil man dann halt gezwungen wäre, die Keyframes im Video zu erhöhen. Die Zwischenbereiche sollte sich in dem Fall einfach durch die Laufzeitlänge des Videos und das eingestellte Keyframeintervall berechnen lassen. Mfg LilaQ |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| netstream, ruckelt, time, timecode, video |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| NetStream "findet" ondemand Video nicht? | Cookie Monster | Flex programmieren | 0 | 20-10-2008 11:56 |
| "NetStream.Buffer.Empty" obwohl flv normal abspielt | menonerd | Flash 8 | 0 | 16-06-2008 10:26 |
| Hintergrund "ruckelt" obwhol die Frame zahl > 30 ist | eLem3ntx | ActionScript 1 | 3 | 01-06-2008 23:18 |
| Wo ist find ich die Leiste mit "Normal", "Darüber", "Gedrückt" und "Aktiv" | maggi198 | Flash Einsteiger | 2 | 19-10-2006 22:33 |
| AS "just in time" in einem .fla suchen/ändern | BlessedSoftware | Flash Entwicklungsumgebung erweitern | 0 | 16-06-2004 23:18 |