Wieso ruckelt das Video oder der Film/Stream?

  • Wieso ruckelt das Video oder der Film/Stream?


    Manch einer kennt vielleicht das Problem, dass beim abspielen eines Streams oder Films zwar die ersten Minuten problemlos funktionieren aber plötzlich fängts an zu ruckeln :no_sad:


    Das kann verschiedene Ursachen haben die ich hier gerne zusammenfassen möchte:


    [hr]


    Zunächst ist die Frage womit und worüber abgespielt und welches Betriebssystem genutzt wird :huh:
    Desweiteren ist auch die Konfiguration (sowohl Software als auch Hardware) wichtig:
    - Wie ist die Software eingestellt?
    - Ist die Software auf dem neusten Stand?
    - Wie ist die Hardware des RaspberryPi's konfiguriert? Insbesondere der Memory-Split oder die Taktung (nicht nur MHz sondern auch Volt)
    - Was wird als Hardware verwendet? RaspberryPI Modell-A oder Modell-B? Revision1 oder Revision2?
    - Welcher Quelle entspringt das Video? Wird übers Internet oder übers Lokale Netzwerk gestreamt? Über NFS oder CIFS? Wird WLAN oder LAN verwendet? Oder ist an dem RaspberryPI direkt ein Datenträger angeschlossen?


    Ihr merkt nun also dass das von vielen Faktoren abhängig sein kann :denker:



    Ein wichtiger Leitsatz den ihr euch merken soltet: Never change a running System (aber beachtet hierfür auch den nachfolgenden Satz!)
    Falls ihr also keine Probleme habt und auch nicht bastelt, dann solltet ihr auch nicht solche Befehle wie rpi-udpate oder apt-get upgrade ausführen!
    Wer das System vollständig installiert hat und bei dem alles so funktioniert wie er es haben möchte - aber auch nicht plant Internetfreigraben o.ä. zu nutzen, der sollte "Never change a running System" beachten... Aber alle anderen, die gerne herum basteln usw können das natürlich ignorieren


    [hr]


    Aber nun ans Eingemachte:


    Die meisten Probleme entstehen beim abspielen von HD Inhalten, bei SD gibts eigentlich nie Probleme.. Manchmal liegt es aber auch garnicht am RPI..


    Hier ein paar Tipps:

    • WLAN (insbesondere verschlüsseltes) ist bei weitem nicht so schnell wie Kabelgebundenes LAN, und WLAN verursacht auch mehr CPU Last. Wenn ihr also die Möglichkeit habt dann zieht den WLAN Stick ab und probiert es stattdessen über ein LAN-Kabel.
    • Spielt den Film von einer anderen Quelle ab: Von einer USB-Festplatte oder USB-Stick aber probiert es auch direkt von der SD! Wenn das funktioniert liegt es zumindest nicht an der Rechenleistung des RaspberryPI's sondern weitere Gründe könnten dann halt das Netzwerk sein (Geschwindigkeit oder dauerhafter Durchsatz oder Stabilität), oder die Art wie auf die Datei übers Netzwerk zugegriffen wird oder an dem Gerät wo die Festplatte o.ä. angeschlossen wurde..
    • Stellt sicher das ihr noch mindestens 500MB freien Speicherplatz auf der SD habt
    • Wenn ihr die Möglichkeit habt versucht es mit einem anderen HDMI Kabel
    • Insbesondere bei HD verursacht DTS Audio auch sehr oft Probleme, wenn ihr also die Möglichkeit habt dann nutzt stattdessen AC3 oder AAC (ggf auch mit "Audio Converter" umwandeln)
    • Schaltet Untertitel (subtitles) aus
    • Stellt sicher das ihr die XBMC Einstellung " Adjust display refresh rate to match video " (auf Deutsch: Bildwiederholfrequenz auf Video anpassen/angleichen) Ausgeschaltet habt! (steht unter Playback / Wiedergabe)
      Genau so wichtig kann aber auch die Einstellung da drunter sein: "Sync playback to display: This setting enables syncing the video to the refresh rate of the monitor". Stellt sicher das ihr diese auch aus habt!

      • Es kann vorkommen das entweder euer Film eine niedrige Bildwiederholfrequenz hat (kleiner 25), oder die Ausgabe zum Monitor/TV kleiner 25 fps hat und dann bremst das die Wiedergabe aus und kann zu Rucklern führen. 20 FPS sollte man mindestens haben.


    • Reduziert die HDMI Bildschirmauflösung (nicht die GUI Auflösung!) auf 720p (müsstet ihr über die config.txt machen!)
    • Erhöht die SWAP Partitions Größe (standardmässig auf 100MB eingestellt, sollte aber auf 512MB gesetzt werden, über die Datei: /etc/dphys-swapfile .. anschliesend rebooten)
    • Besorgt euch eine schnellere SD Karte (Class 10)
    • Bevor ihr den RPI übertaktet probiert erst folgendes aus (in der config.txt)

      Code
      hdmi_drive=2
      config_hdmi_boost=4


    • Übertaktet euren RaspberryPI ein bischen (ebenfalls über die config.txt:(

      Code
      arm_freq=800
      gpu_freq=350
      sdram_freq=500


    • Achtet bei der Übertaktung auch auf over_voltage Einstellungen, die sind ebenfalls wichtig und können bei zu niedrigen Werten Probleme verursachen da die CPU/GPU dann nicht genug Strom kriegt um auf Volllast richtig zu arbeiten.
    • Auch kann eine schlechte oder schwankende Stromversorgung Probleme verursachen, was sowohl für den RaspberryPi gilt (CPU+GPU+RAM sowie USB und LAN) als auch die daran angeschlossenen USB-Geräte (WLAN Sticks oder Festplatten)

      • Handy Lade-Geräte sollten generell vermieden werden.


    • Schaltet unnötige Plugins aus. Auch wenn die aktuell nicht verwendet werden verursachen die meisten trotzdem CPU Last, die aber u.U. zum abspielen benötigt wird!

      • PlugIns wie VNC verursachen enorm viel CPU Last, auch wenn ihr das aktuell nicht nutzt (durchgehend ca. 50%). Details dazu wurden > hier < diskutiert.
      • PlugIns wie RSS-Feed verursachen ebenfalls enorm viel CPU Last ...
      • Es gibt aber auch noch etlich andere PlugIns die unnötig CPU Last verursachen - also am besten alle stück für stück deaktivieren, damit ihr später auch genau wisst woran es letztlich gelegen hat.
      • Manchmal kommt es aber auch vor das PlugIns fehlerhaft sind, oder veraltet. Im Zweifel also am besten alle PlugIns weg lassen und auf unnötigen SchnickSchnack verzichten!


    • Es gibt auch Skins die ziemlich viel CPU / GPU Last erzeugen zB das Quarz. Verwendet am besten das default Skin oder ein anderes schlichtes um sicher zu gehen das es nicht daran liegt.
    • Meldet euch am besten wärend des Abspielens mal über SSH auf dem RaspberryPI an und führt dann den Befehl top aus, um zu beobachten ob das Abspielen tatsächlich grenzwertige Last erzeugt oder das Problem wohlmöglich doch nicht an zu wenig Rechenleistung liegt. Drückt in top die Taste c um vollständige Pfade angezeigt zu kriegen. Hilfe kriegt ihr mit h angezeigt und beenden tut ihrs mit der Taste q


    OpenELEC:
    Normalerweise befindet sich die config.txt in /boot/ , mit Ausnahme von OpenELEC da befindet sie sich in /flash/
    OpenELEC ist generell etwas spezieller als andere Distributionen, so kann man zB nicht sowohl LAN als auch WLAN gleichzeitig nutzen und eure SSID darf weder versteckt sein noch Leerzeichen enthalten.



    Raspbmc/XBian/XBMC:
    Desweiteren gibt es bei den MediaCenter Betriebssystemen die XBMC nutzen noch eine weitere Sache mit der man herum probieren könnte und zwar die Einstellung cachemembuffersize (Angabe in Bytes) in der advancedsettings.xml (befindet sich im userdata Verzeichnis).
    Standardmäßig, oder zumindest laut der advancedsettings.xml  github  Repo, ist der Cache auf 20MB eingestellt. Eine Einstellung von zB 41943040 würde einen Memory-Cache von 40MB entsprechen.
    Eine Einstellung von 0 würde den Memory-Cache ausschalten.
    Aber Achtung: Mehr Cache bedeutet nicht zwangsläufig besser! So könnte zB auch eine Einstellung auf 5MB (5242880) oder 12MB (12582912) ausreichen bzw Besserung bringen..



    HD TV:
    Bezüglich HD TV-Sender beachtet auch diesen Beitrag