Jedes Mal, wenn ich versuche, schwere (meistens 1080p) Videos über das Netzwerk zu streamen (webdav, sftp ...), schlägt dies entweder fehl oder ich erhalte die Meldung "Cache ist voll" usw. Videos werden abgespielt, aber zufällig gestoppt (um erneut zu puffern) , Ich vermute).
Ich weiß, dass dies ein häufiges Problem ist und ich weiß, welche Optimierungen ich vornehmen kann (auch Curl ).
Die Umgebung:
Ich verwende ein RPi-Modell B und habe eine 100M / b-Internetverbindung. Ich habe mit Kodi 14.2 und Kodi 15 (openelec 5.0.7, openelec 5.95.2) getestet.
Die Tests:
Bisher habe ich unter vielen zusätzlichen Optionen Folgendes versucht:
Cache\Protocol | Webdav | SFTP (local and internet)
--------------------------------------------------------------------------
No cache | not loading | loads quickly, no error, stops frequently
--------------------------------------------------------------------------
(5mb cache) | not loading | slow to load, cache error, stops randomly
--------------------------------------------------------------------------
(25mb cache) | not loading | very slow to load, cache error, stops randomly
--------------------------------------------------------------------------
sdcard cache | not loading | incredibly slow to load, no error, fine
--------------------------------------------------------------------------
Videoproblem?
Nee. Wenn es auf die SD-Karte kopiert wird, läuft es reibungslos.
RAM Problem?
Ich würde die Hardwarebeschränkung verstehen, wenn der RAM voll wäre, aber beim Ansehen von Videos habe free -m
ich Folgendes:
total used free shared buffers
Mem: 373 236 137 4 34
-/+ buffers: 202 171
Swap: 0 0 0
Es scheint, dass es genügend gibt ...
Interessanterweise sind die Puffer, wie @goldilocks bemerkte, ungewöhnlich niedrig.
Netzwerk Problem?
Wenn ich eine Videodatei manuell mit SFTP herunterlade und gleichzeitig dieselbe Datei wiedergebe, funktioniert dies. Download-Geschwindigkeit: ~ 1,5 MB / s. Weder das Netzwerk noch die Entschlüsselung sind also ein Engpass.
Anderes Problem?
Fehler in der Protokolldatei (mit Video-Debug, ffmpeg-Debug), außer Debug und Hinweise:
ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting
OK, Curl ist also nicht für Video-Streaming optimiert. Aber was ist mit SFTP? Es sollte ein Kinderspiel sein.
Konfigurationsproblem?
Der letzte Test oben (SD-Karten-Cache) ist interessant. Das Video wird abgespielt, nachdem ca. 150M (!) Auf die SD-Karte ( .kodi/temp/filecache000.cache
) heruntergeladen wurden . Obwohl es gut läuft, ist es keine praktikable Lösung, da es zu langsam ist, um zu starten.
Es scheint zu versuchen, die gleiche Menge an RAM herunterzuladen, wobei die Konfiguration in ignoriert wird advancedsettings.xml
. Ich habe überprüft, die Datei wird ohne Probleme geladen. Dies ist ein Beispiel für etwas, das ich getestet habe ( .kodi/userdata/advancedsettings.xml
):
<advancedsettings>
<network>
<buffermode>1</buffermode>
<cachemembuffersize>5242880</cachemembuffersize>
<readbufferfactor>4.0</readbufferfactor>
<curlclienttimeout>60</curlclienttimeout>
<curllowspeedtime>20</curllowspeedtime>
</network>
</advancedsettings>
Hinweis: Einige dieser Optionen sind in Kodi 17 nicht mehr korrekt. Informationen zum Update finden Sie in der Antwort von @ZacWolf
Also hat jemand eine Idee? Was könnte hier falsch sein? Was auch immer die Lösung sein mag, ich möchte auch wissen, warum die normale Nutzung (RAM-Puffer) in diesem Fall fehlschlägt.
EDIT: Test auf Archlinux
Ich habe Kodi unter Archlinux installiert, um festzustellen, ob es sich um ein Kodi- oder Openelec-Problem handelt. Es ist das gleiche: HD-Videos sind abgehackt, daher scheint es ein Fehler in Kodi zu sein. Es ist eher ein Protokollproblem (SFTP und WebDAV: http), weil mein Test mit SSHFS großartig funktioniert. Leider ist es nicht trivial, SSHFS auf openelec zu installieren.
EDIT 2: Eine Problemumgehung
Ich schreibe es hier, weil es das Pufferproblem nicht direkt angeht, aber ich habe Kodi seit mehr als einem Jahr unter Archlinux installiert und es funktioniert perfekt. Es ist weniger noob-freundlich als openelec, aber für diejenigen, die interessiert sind:
- Installieren Sie Archlinux für ARM (sehr einfach, folgen Sie einfach der Anleitung - für rpi1, für neuere, ändern Sie einfach die Plattform);
- Installieren Sie Kodi ( folgen Sie dem Archlinux-Wiki-Handbuch - installieren Sie im Grunde das
kodi-rbp
Paket); - Aktivieren Sie den Kodi-Dienst, um Kodi beim Start automatisch auszuführen :
# systemctl enable kodi.service
; - Installieren Sie SSHFS :
pacman -Suy sshfs
; - Verwenden Sie die sehr nützliche automatische SSHFS-Bereitstellung mit
/etc/fstab
, um Ihre entfernte Freigabe bereitzustellen .
Getan. Vergessen Sie nicht, frenquently ( pacman -Suy
) zu aktualisieren .
free
- etwas Interessantes in Ihrem Beitrag ist also die Tatsache, dass diese Anzahl relativ klein ist. Wenn Sie den To-Disk-Cache von Kodi vergrößern, kann / sollte sich diese Anzahl während der Aktion erhöhen, um sie ungefähr zu erreichen.