HOW-TO:Modify the video cache: Difference between revisions

From Official Kodi Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 7: Line 7:
__TOC__
__TOC__
==What is the video cache==
==What is the video cache==
{{hidden|What is the video cache|
During playback from internet sources, XBMC will cache the video in RAM for a little bit. If the data rate of the video file is too slow for live playback, XBMC will pause until it can fill the cache enough so that it won't need to pause anymore.
During playback from internet sources, XBMC will cache the video in RAM for a little bit. If the data rate of the video file is too slow for live playback, XBMC will pause until it can fill the cache enough so that it won't need to pause anymore. Sometimes XBMC doesn't have enough RAM and will give a "cache full" error message. XBMC has various advanced settings that can be used to tweak this behavior.}}


==How-to modify the cache==
==How-to modify the cache==

Revision as of 06:10, 20 August 2013

Template:Gotham

This page describes three advancedsettings.xml settings that can be used to maximize the cache that XBMC uses. You can use all or just a couple of these settings to see significant improvements in cache performance, should you require it. This can help with intermittent network issues, reduce how long the network is tied up, and/or improve battery life [1].

Note: Even if you change the cache settings in XBMC, that won't change how fast the video file data comes in over the network: It won't make a slow server load the video any faster. It won't fix a slow local network.

What is the video cache

During playback from internet sources, XBMC will cache the video in RAM for a little bit. If the data rate of the video file is too slow for live playback, XBMC will pause until it can fill the cache enough so that it won't need to pause anymore.

How-to modify the cache

If you don't already have an advancedsettings.xml file, it's very simple to make. XBMC uses this file for advanced settings and features that normal users shouldn't modify without first knowing what they do, as well as for experimental features, etc.

  1. Since you can use all or just some of the following settings, let's start out with the basic file. Create a plain text file (no rich text formatting, don't use .doc, etc) and save it as advancedsettings.xml. Make sure that the file extension is ".xml" and not ".txt" or ".xml.txt".
  2. The basic advancedsettings.xml file will look like this:
    <advancedsettings>
         <network>
              <!--- The three settings will go in this space, between the two network tags. --->
         </network>
    </advancedsettings>
  3. Save this file in your userdata folder:
    If you have an existing file, make sure the <network></network> tags, and settings we'll add between them, are between the main <advancedsettings></advancedsettings> tags.

The Userdata folder is a subfolder of the Kodi Data Folder and is located as shown in the table below.

Operating system Userdata Folder
Android Android/data/org.xbmc.kodi/files/.kodi/userdata/ (see note)
iOS /private/var/mobile/Library/Preferences/Kodi/userdata/
LibreELEC /storage/.kodi/userdata/
Linux ~/.kodi/userdata/
macOS /Users/<your_user_name>/Library/Application Support/Kodi/userdata/
Nvidia Shield (SMB) smb://<nvidiashieldurl>/internal/Android/data/org.xbmc.kodi/files/.kodi/userdata
OSMC /home/osmc/.kodi/userdata/
tvOS /private/var/mobile/Library/Preferences/Kodi/userdata/
webOS /media/developer/apps/usr/palm/applications/org.xbmc.kodi/.kodi/userdata/
Windows %APPDATA%\Kodi\userdata
Windows Portable <Install location chosen by you>\portable_data\userdata\
Windows via Microsoft Store %LOCALAPPDATA%\Packages\XBMCFoundation.Kodi_4n2hpmxwrvr6p\LocalCache\Roaming\Kodi\
Windows Xbox %LOCALAPPDATA%\Packages\XBMCFoundation.Kodi_4n2hpmxwrvr6p\LocalCache\Roaming\Kodi\
Note: In some Android setups the path may be slightly different to the one stated above.


Enable cache for local videos

advancedsettings.xml tag what it does
          <alwaysforcebuffer>1</alwaysforcebuffer>

This setting will force XBMC to use a cache for all video files, including local network, internet, and even the local hard drive. We do this because by default XBMC will only cache videos that use internet file paths/sources.

Increasing the cache

advancedsettings.xml tag what it does
          <cachemembuffersize>0</cachemembuffersize>

Here we can do two things:

  • Value: 5242880 - keep the cache in RAM, but increase how much RAM is used. The number is the buffer size in bytes (5242880 is the default, which is about 5MB, which requires 15MB of free RAM). XBMC will not buffer ahead more than this. WARNING: for the memory size set here, XBMC will require 3x the amount of RAM to be free. Setting this too high might cause XBMC to crash if it can't get enough RAM.

or

  • Value: 0 - we can use the local disk memory (typically your hard drive), which will not put any limit on the size (outside of the size of your drive). This also allows devices with low RAM, such as the Raspberry Pi, to cache more than they normally would due to the small amount of RAM they have. Note: The cache is reset whenever a video is stopped, so you don't have to worry about needing to manually clear it out.

Increase the fill-rate of the cache

advancedsettings.xml tag what it does
          <readbufferfactor>4.0</readbufferfactor>

By default (value: 1), XBMC will only fill the cache a little above what is needed to play it back. It does this as to not max out your network and possibly max out some hardware. For most users and hardware, this setting shouldn't cause any issues, but be aware of it if you have unusual CPU spikes in your HTPC.


The value of this setting is a multiplier of the default rate. If XBMC is loading a typical bluray raw file at 36 Mbit/s, then a value of 2 will need at least 72 Mbit/s of network bandwidth. However, unlike with the RAM setting, you can safely increase this value however high you want, and XBMC won't crash. Just know that it might cause XBMC to attempt to use all available bandwidth on your HTPC during playback.

Examples

Notes

  1. Certain devices (laptops, tablets, etc) that use sustained slow/medium-wifi usage, over the length of the video, will use more power than using fast-wifi usage for a shorter time. In other words, slowly loading a video file that is 30 minutes long, over a period of 30 minutes, can actually take more power than loading a 30 minute video in 5 minutes, even though more wifi speed/power is used during that 5 minutes.