Проблеми з буферизацією kodi (на openelec)


9

Кожен раз, коли я намагаюся передавати важкі (в основному 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, але для тих, хто зацікавлений:

Зроблено. Не забудьте оновити оновлення ( pacman -Suy).


150 Мбайт може бути на високій стороні, але 5 МБ, ймовірно, занадто низьке для вмісту бітрейтів ~ 1 Мб / с, якщо ви хочете уникнути затишшя. Я б рвав параноїю з приводу SD-карти. Ви купили його, щоб користуватися правдою? Якщо ні, то в прохолодному сухому шафі десь буде безпечніше.
золотинки

Дякую за вашу турботу. Але майте на увазі, моє запитання стосується не лише буфера sdcard. По-друге, 150М, при ~ 1МБ / с ... Так, 150с. Це НЕ абсурдно довго. Чи є можливість зміни розміру буфера при використанні sdcard? Це може бути рішенням. Тоді, незалежно від розміру кешу, він завантажить на відео sdcard все відео (іноді кілька ГБ), а не лише буфер. Я знаю, sdcard дешеві. Це не велика справа. Я знаю. Але чому я повинен турбуватися про sdcard, коли оперативна пам'ять повинна працювати?
Гі-Дон

Вибачте - я трохи тонізував це, озирнувшись. Я не використовував Kodi, тому мені не могло бути багато допомоги, це було просто загальне спостереження. IMO, буферизація на диску є кращою стратегією, ніж буферизація оперативної пам’яті, оскільки якщо ви заповнили оперативну пам’ять на 100%, у системи не залишиться кеш-диска, який помітно вплине на всі аспекти роботи. Однак якщо ви не заповнюєте оперативну пам’ять, і нічого іншого не робить, те, що ви записуєте (і одночасно читаєте з) диска, безумовно, буде поміщено в кеш диска - тобто, оперативної пам'яті, але динамічно керується ядром, що є що робить це кращою стратегією.
золотинки

У випадку, коли це не зрозуміло: ОС використовує стільки некомплектної оперативної пам’яті, скільки можливо для кешування (я згадував це вище як «кеш диска», що є незначним помилкою, але наголошує на тому, що зазвичай це в основному речі, які часто читаються з диска ). На пі це не було б незвичайно для того , щоб бути все незавершених RAM, це «буферні» фігура з free- так що - то цікаве в вашому пості є те , що це число відносно невелике. Якщо ви збільшите кеш-диск на кеш-диску, це число може / повинно збільшитися під час дії, щоб приблизно відповідати цьому.
золотинки

1
Я бачив;) Добре, я розумію, що використовувати диск краще, ніж заповнювати ОЗУ. Це гарне рішення зробити так, щоб я міг зменшити необхідний розмір буфера для відтворення відео. До речі, здається, це відсоток, а не абсолютна сума. Все-таки мені цікаво, що тут відбувається. Як не дивно, у мене стільки оперативної пам’яті невикористано, навіть коли відео буферується.
Гі-Дон

Відповіді:


2

EDIT (12/2017)

Kodi v17 перейменовано та перемістило теги у Advancedsetting.xml

<cachemembuffersize> перейменовано на <memorysize>

<readbufferfactor> перейменовано на <readfactor>

І їх було вилучено з <мережі> та додано до <cache>

Мої unasettings.xml тепер виглядають так:

<?xml version="1.0" encoding="utf-8"?>
<advancedsettings>
        <cache>
                <memorysize>524288000</memorysize>
                <buffermode>1</buffermode>
                <readfactor>6</readfactor>
        </cache>
</advancedsettings>

Це спеціально для пристрою Vero4K, який має більше пам’яті, ніж Pi, тому ці налаштування потрібно налаштувати саме на вашу наявну пам’ять.
ZacWolf

1

Я запускаю Pi 3 з OpenElec на ньому, і я також зіткнувся з безліччю проблем із буферизацією.

Я передавав його через Wi-Fi, оскільки я зрозумів, що він знаходиться поруч із маршрутизатором і не повинен мати жодних проблем. Після підключення через Ethernet я зміг видалити розширений файл XML разом, коли проблеми з буферизацією припинилися.

Мій ноутбук і телефон чудово грають через Wi-Fi без буферизації, тому щось із вбудованим Wi-Fi Pi 3 на OpenElec викликає проблеми.


Я радий, що ви вирішили свою проблему, і я впевнений, що це допоможе багатьом людям, які зіткнулися з цією проблемою. У моєму випадку я використовував Ethernet з самого початку. Для rpi1 я не думаю, що це рішення. Попри це, дивно, що у вас була схожа проблема на rpi3, оскільки вона має вдвічі більше оперативної пам’яті, ніж rpi1… Я можу помилятися, але здається, кеш-керування в коді просто шалене.
Гі-Дон

-1

У мене була така ж проблема, і я використав цей "хак" , зараз все працює без проблем.

--- редагувати --- Дотримуючись пропозиції @Simulant:

  • Встановіть інструмент технічного обслуговування xunity.
  • Потрапив у програму (не налаштування), xunity - налаштування.
  • Виберіть "Додати 0 кеш-розширений XML

1
Будь ласка, викладіть ключові факти з вашого пов’язаного джерела. В іншому випадку, якщо пов'язане джерело отримає офлайн, ваша публікація буде марною.
Симулятор

1
Хіба Xunity не є для цього лише графічним інтерфейсом? Я маю на увазі, чим він відрізняється від налаштування самого файла Advancedsettings.xml ? Насправді я зробив налаштування без кешу, це спосіб повільно завантажувати для відеосигналів SFTP або webdav.
Гі-Дон

Це гуї. Але з мого досвіду пряме редагування може бути складним (через дозволи тощо). Аддон прекрасно працює, я його використав :-)
Меїр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.