हर बार जब मैं भारी (अधिकतर 1080p) वीडियो नेटवर्क (वेबडाव, sftp ...) को स्ट्रीम करने की कोशिश करता हूं, तो यह या तो विफल हो जाता है या मुझे संदेश "कैश भरा हुआ है" आदि मिलते हैं। वीडियो खेलना शुरू हो जाता है, लेकिन बेतरतीब ढंग से बंद (फिर से बफर करने के लिए) , मेरा अनुमान)।
मुझे पता है कि यह एक सामान्य मुद्दा है और मुझे पता है कि मैं जो ट्विक्स कर सकता हूं ( कर्ल भी कर सकता हूं )।
पर्यावरण:
मैं एक आरपीआई मॉडल बी का उपयोग करता हूं और मेरे पास 100 एम / बी इंटरनेट कनेक्शन है। मैं कोडी 14.2 और कोडी 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
--------------------------------------------------------------------------
वीडियो की समस्या?
नहीं। अगर एसडी कार्ड पर कॉपी किया जाता है, तो यह आसानी से चलता है।
रैम की समस्या?
मैं हार्डवेयर सीमा को समझ सकता हूं यदि रैम भरा हुआ था, लेकिन, वीडियो देखते समय, free -m
मुझे यह देता है:
total used free shared buffers
Mem: 373 236 137 4 34
-/+ buffers: 202 171
Swap: 0 0 0
ऐसा लगता है कि बहुत सारे उपलब्ध हैं ...
दिलचस्प तथ्य, जैसा कि @goldilocks ने देखा, बफ़र्स असामान्य रूप से कम हैं।
नेटवर्क की समस्या?
अगर मैं SFTP के साथ मैन्युअल रूप से एक वीडियो फ़ाइल डाउनलोड कर रहा हूं , जबकि एक ही समय में एक ही फ़ाइल खेल रहा है, तो यह काम करता है। डाउनलोड गति: ~ 1.5MB / s। इसलिए, न तो नेटवर्क, न ही डिक्रिप्शन एक अड़चन है।
अन्य समस्या?
लॉगगाइल में त्रुटियां (वीडियो डिबग, ffmpeg डिबग के साथ), डिबग और नोटिस को छोड़कर:
ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting
ठीक है, इसलिए कर्ल वीडियो स्ट्रीमिंग के लिए अनुकूलित नहीं है। लेकिन SFTP का क्या? यह केक का एक टुकड़ा होना चाहिए।
कॉन्फ़िगरेशन समस्या?
ऊपर अंतिम परीक्षण (sdcard कैश) दिलचस्प है। यह sdcard ( .kodi/temp/filecache000.cache
) पर लगभग 150M (!) को लोड करने के बाद, वीडियो खेलना शुरू करता है । हालांकि यह अच्छी तरह से चलता है, यह एक व्यवहार्य समाधान नहीं है क्योंकि यह शुरू करने के लिए बहुत धीमा है।
ऐसा लगता है कि रैम की एक ही राशि को डाउनलोड करने की कोशिश की जा रही है, जिसमें कॉन्फ़िगरेशन को अनदेखा किया गया है 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: आर्कलिनक्स पर टेस्ट
मैंने यह निर्धारित करने के लिए कि यह एक कोड़ी या ओपेनलेक मुद्दा है, मैंने आर्कलिनक्स पर कोड़ी स्थापित की। यह वही है: HD वीडियो तड़का हुआ है, इसलिए यह कोड़ी में एक बग लगता है। यह एक प्रोटोकॉल समस्या (SFTP और WebDAV: http) की तरह अधिक है क्योंकि SSHFS के साथ मेरा परीक्षण बहुत अच्छा काम करता है। दुर्भाग्य से, यह openelec पर SSHFS स्थापित करने के लिए तुच्छ नहीं है।
संपादित 2: एक वैकल्पिक हल
मैं इसे यहाँ लिखता हूँ, क्योंकि यह सीधे बफ़रिंग समस्या को संबोधित नहीं करता है, लेकिन मैंने अब एक साल से अधिक समय तक आर्कलिनक्स पर कोड़ी स्थापित की है, और यह पूरी तरह से अच्छी तरह से काम करती है। यह openelec की तुलना में कम noob-friendly है, लेकिन उन लोगों के लिए जो रुचि रखते हैं:
- ARM के लिए Archlinux स्थापित करें (बहुत आसान है, बस गाइड का पालन करें - यह rpi1 के लिए है, हाल ही में एक के लिए, बस प्लेटफ़ॉर्म को बदल दें);
- कोडी स्थापित करें ( आर्कलिनक्स विकी गाइड का पालन करें - मूल रूप से,
kodi-rbp
पैकेज स्थापित करें ); - कोड़ी सेवा को स्वतः स्टार्टअप पर चलाने के लिए सक्षम करें
# systemctl enable kodi.service
:; - SSHFS स्थापित करें
pacman -Suy sshfs
:; - बहुत उपयोगी प्रयोग करें automounting sshfs साथ
/etc/fstab
अपने दूर के शेयर माउंट करने के लिए।
किया हुआ। उन्मादी तरीके से अपडेट करना न भूलें ( pacman -Suy
)।
free
- इसलिए आपके पोस्ट में कुछ रोचक तथ्य यह है कि यह संख्या अपेक्षाकृत कम है। यदि आप कोडी के डिस्क कैश को बढ़ाते हैं, तो उस संख्या को मैच के दौरान कार्रवाई के दौरान बढ़ा सकता है / चाहिए।