Кожен раз, коли я намагаюся передавати важкі (в основному 1080p) відео через мережу (webdav, sftp ...), це або не вдається, або я отримав повідомлення "кеш повний" і т.д. , Я вважаю).
Я знаю , що це загальна проблема , і я знаю , що Твік я можу зробити ( завиток теж).
Середовище:
Я використовую RPi модель B і маю 100M / b підключення до Інтернету. Я тестував Kodi 14.2 та Kodi 15 (openelec 5.0.7, openelec 5.95.2).
Тести:
Поки серед багатьох додаткових варіантів я спробував:
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
--------------------------------------------------------------------------
Проблема з відео?
Ні. Якщо скопійовано на sd карту, вона працює безперебійно.
Проблема з ОЗП?
Я б зрозумів обмеження обладнання, якби оперативна пам’ять була повна, але під час перегляду відеороликів free -m
мені це дає:
total used free shared buffers
Mem: 373 236 137 4 34
-/+ buffers: 202 171
Swap: 0 0 0
Здається, є багато доступних ...
Цікавий факт, як зауважив @goldilocks, буфери надзвичайно низькі.
Проблема з мережею?
Якщо я завантажую відеофайл вручну за допомогою SFTP, при цьому одночасно відтворюючи цей самий файл, він працює. Швидкість завантаження: ~ 1,5 Мб / с. Отже, ні мережа, ні розшифровка не є вузьким місцем.
Інша проблема?
Помилки журналу (з налагодженням відео, налагодження ffmpeg), за винятком налагодження та повідомлень:
ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting
Гаразд, тому curl не оптимізовано для потокового відео. А як щодо SFTP? Це повинен бути шматок пирога.
Проблема з конфігурацією?
Останній тест вище (кеш sdcard) цікавий. Він починає відтворювати відео, після завантаження приблизно 150M (!) На sdcard ( .kodi/temp/filecache000.cache
). Хоча це працює добре, це не життєздатне рішення, оскільки це занадто повільно починати.
Схоже, намагаються завантажити однаковий об'єм оперативної пам'яті, ігноруючи конфігурацію в advancedsettings.xml
. Я перевірив, файл завантажується без жодної проблеми. Це приклад того, що я тестував ( .kodi/userdata/advancedsettings.xml
):
<advancedsettings>
<network>
<buffermode>1</buffermode>
<cachemembuffersize>5242880</cachemembuffersize>
<readbufferfactor>4.0</readbufferfactor>
<curlclienttimeout>60</curlclienttimeout>
<curllowspeedtime>20</curllowspeedtime>
</network>
</advancedsettings>
Примітка: деякі з цих параметрів більше не коректні в коді 17, див. Відповідь на відповідь @ZacWolf
Отже, хтось має якусь ідею? Що може бути тут не так? Яким би не було рішення, я також хочу знати, чому нормальне використання (буфер ОЗУ) не спрацьовує в цьому випадку.
EDIT: Тест на Archlinux
Я встановив kodi на Archlinux, щоб визначити, чи це проблема kodi чи openelec. Це те ж саме: HD-відео є хиткими, тому здається, що це помилка в коді. Це більше схоже на проблему з протоколом (SFTP та WebDAV: http), тому що мій тест із SSHFS чудово працює. На жаль, встановити SSHFS на openelec не тривіально.
РЕДАКТІВ 2: Упорядкування
Я пишу це тут, оскільки це не стосується безпосередньо проблеми буферизації, але я встановив kodi на Archlinux вже більше року, і він працює чудово. Це менш noob-friendly, ніж openelec, але для тих, хто зацікавлений:
- Встановіть Archlinux для ARM (дуже просто, просто дотримуйтесь інструкції - це для rpi1, для більш пізнього просто змініть платформу);
- Встановити Kodi ( дотримуйтесь посібника з вікі Archlinux - в основному, встановити
kodi-rbp
пакет); - Включити Коди службу для автоматичного запуску при запуску Коди:
# systemctl enable kodi.service
; - Установка SSHFS:
pacman -Suy sshfs
; - Використовуйте дуже корисне SSHFS автомонтірованіе з
/etc/fstab
змонтувати далеку частку.
Зроблено. Не забудьте оновити оновлення ( pacman -Suy
).
free
- так що - то цікаве в вашому пості є те , що це число відносно невелике. Якщо ви збільшите кеш-диск на кеш-диску, це число може / повинно збільшитися під час дії, щоб приблизно відповідати цьому.