Video läuft nicht zeitsynchron -- was tun?

26/08/2016 - 13:57 von Michael Hagedorn | Report spam
Hallo.
Wir haben hier die schöne CD "Standard Time (screensaver)" gekauft (soll
keine Werbung sein). Das ist ein 24-h-Video, bei dem die Uhrzeit
"analog/digital" angezeigt wird. Wenn auch schon àlter, ist es doch ganz
witzig gemacht

Diese Uhr soll bei uns auf einem RasPi3 laufen und auf einem Display
angezeigt werden. Das klappt im Prinzip auch -- doch leider làuft das
Video und die "echte" Zeit nicht synchron. Es ist so: Der RasPi fàhrt
morgens hoch, stellt die Uhrzeit per ntpdate ein und startet automatisch
das Video (das GENAU 24 Stunden dauert!) an der richtigen Stelle. Aber
nach etwa einer Stunde hat man schon ein eine nachgehende Anzeige.
Offensichtlich làuft das Video also zu langsam, obwohl der Raspi damit
nicht wirklich ausgelastet ist.
Ich starte das Video übrigens mit mplayer, da vlc nur zu einer SEHR
ruckeligen Ausgabe führte.

Das zweite Problem ist, dass das Video nicht wirklich im fullscreen-Mode
làuft, sondern von einem dicken schwarzen Rahmen umgeben ist. Wàhlt man
die Option -zoom fàngt es erneut an zu ruckeln und làuft nicht mehr flüssig.

Ich hatte als Not-Lösung die Idee, den Player zu festen Zeiten per
cronjob zu killen und dann erneut an der richtigen Stelle einsteigen zu
lassen. Das Prinzip klappt auch -- doch wenn ich das Video dann neu
starte, wird es seltsamerweise von einem NOCH dickeren schwarzen Balken
umgeben und wird kleiner angezeigt als zuvor. Zudem ruckelt es auch bei
der kleineren Darstellung wieder.

Vielleicht hat ja jemand einen guten Tipp, woran das liegen kann bzw was
man hier verbessern kann? Unten die beiden Scripte, die ich mir
gebastelt habe.
Danke vorab,
Michael

@reboot:

#!/bin/sh

filename="/home/pi/Downloads/st24.mp4"

calculate=$(( $(date '+ %k * 3600 + %M * 60 + 1%S-100') ))

echo "Der Tag ist $calculate Sekunden alt!"

#VLC zu ruckeling auf dem RasPi3!
#vlc -Idummy --fullscreen --loop --start-time $calculate $filename

mplayer -loop 0 -fs -nosound -ss $calculate $filename


Cronjob:

#!/bin/sh
#Video làuft nicht zeitsyncron -- daher regelmàßig kill & neustart?

pkill mplayer
/home/pi/Downloads/video_abspielen.sh
-
^ Das liefert leider ein verkleinertes Bild, das ebenfalls ruckelt.
 

Lesen sie die antworten

#1 Marcel Mueller
26/08/2016 - 18:26 | Warnen spam
On 26.08.16 13.57, Michael Hagedorn wrote:
Wir haben hier die schöne CD "Standard Time (screensaver)" gekauft (soll
keine Werbung sein). Das ist ein 24-h-Video, bei dem die Uhrzeit
"analog/digital" angezeigt wird. Wenn auch schon àlter, ist es doch ganz
witzig gemacht



Ganz schön Energieintensive Uhr (für den Bildschirm).

Diese Uhr soll bei uns auf einem RasPi3 laufen und auf einem Display
angezeigt werden. Das klappt im Prinzip auch -- doch leider làuft das
Video und die "echte" Zeit nicht synchron.



Das ist normal. Die Wiedergabegeschwindigkeit von Videos ist fast nie
exakt. Z.T. hàngt sie sogar noch vom Land oder genauer gesagt der
Videonorm ab. Film DVDs dauern z.B. in USA und Deutschland leicht
unterschiedlich lange (selber Film).

Üblicherweise wird das Bild auf die Soundausgabe synchronisiert, den da
stören Ruckler wesentlich mehr, als im Bild. Das bedeutet beim Raspi ist
es der Systemtaktgenerator. Der ist aber nur sehr ungenau. Dem Raspi ist
es ja auch vollkommen egal, ob er mit 900 MHz oder mit 905MHz làuft -
der Uhr ist das nicht egal.

Es würde mich auch nicht wundern, wenn der Soundtakt des Pi selbst
nominell nicht genau 48.000 Hz ist, sondern bauartbedingt ein paar
Prozent daneben liegt.

Offensichtlich làuft das Video also zu langsam, obwohl der Raspi damit
nicht wirklich ausgelastet ist.



Wie viel zu langsam?

Ich starte das Video übrigens mit mplayer, da vlc nur zu einer SEHR
ruckeligen Ausgabe führte.



VLC unterstützt die Hardwarebeschleunigung auf dem Pi AFAIK nicht.

Der native Player für die Pi-Hardware ist omxplayer. Der ist dabei.

Das zweite Problem ist, dass das Video nicht wirklich im fullscreen-Mode
làuft, sondern von einem dicken schwarzen Rahmen umgeben ist.



Das ist Overscan. Das kann man in /boot/config.txt auf's Pixel genau
konfigurieren und natürlich auch ausschalten.

Wàhlt man
die Option -zoom fàngt es erneut an zu ruckeln und làuft nicht mehr flüssig.



Vermutlich wird die Zoom-Funktion nicht an die Hardware weiter gegeben.

Ich hatte als Not-Lösung die Idee, den Player zu festen Zeiten per
cronjob zu killen und dann erneut an der richtigen Stelle einsteigen zu
lassen. Das Prinzip klappt auch -- doch wenn ich das Video dann neu
starte, wird es seltsamerweise von einem NOCH dickeren schwarzen Balken
umgeben und wird kleiner angezeigt als zuvor. Zudem ruckelt es auch bei
der kleineren Darstellung wieder.



Beim killen werden möglicherweise die GPU-Ressourcen nicht sauber frei
gegeben. Danach steht nicht mehr genügend (reservierter) GPU-Speicher
für die Hardwaredekodierung bereit.

Vielleicht hat ja jemand einen guten Tipp, woran das liegen kann bzw was
man hier verbessern kann?



Du könntest versuchen eine Player-Option zu finden, die die
Synchronisation auf die Soundausgabe deaktiviert und statt dessen sie
Systemuhr verwendet. Das ruckelt zwar leicht, aber das sollte bei dem
sich langsam àndernden Bild nicht auffallen.
Die Systemuhr des Pi ist auch nicht sonderlich genau, aber man könnte
selbige per ntpd kontinuierlich auf dem aktuellen Stand halten.


Marcel

Ähnliche fragen