Masalah buffer dengan kodi (di openelec)

9

Setiap kali saya mencoba melakukan streaming video berat (kebanyakan 1080p) melalui jaringan (webdav, sftp ...), itu gagal atau saya mendapat pesan "cache penuh" dll. Video mulai diputar, tetapi berhenti secara acak (untuk buffer lagi , Saya tebak).

Saya tahu ini adalah masalah umum dan saya tahu tweak yang bisa saya lakukan ( meringkuk juga).

Lingkungan:

Saya menggunakan model RPi B dan saya memiliki koneksi internet 100M / b. Saya telah menguji dengan Kodi 14.2 dan Kodi 15 (openelec 5.0.7, openelec 5.95.2).

Tes:

Sejauh ini, di antara banyak opsi tambahan, inilah yang saya coba:

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
--------------------------------------------------------------------------

Masalah video?

Nggak. Jika disalin pada kartu sd, itu berjalan dengan lancar.

Masalah RAM?

Saya akan mengerti batasan perangkat keras jika RAM penuh, tetapi, saat menonton video, free -mberikan saya ini:

             total         used         free       shared      buffers
Mem:           373          236          137            4           34
-/+ buffers:                202          171
Swap:            0            0            0

Sepertinya ada banyak tersedia ...

Fakta menarik, seperti @goldilocks perhatikan, buffer sangat rendah.

Masalah jaringan?

Jika saya mengunduh file video secara manual dengan SFTP, sambil memutar file yang sama ini pada saat yang sama, ia berfungsi. Kecepatan unduh: ~ 1.5MB / s. Jadi, bukan jaringan, atau dekripsi adalah hambatan.

Masalah lain?

Kesalahan dalam file log (dengan debug video, debug ffmpeg), kecuali debug dan pemberitahuan:

ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting

OK, jadi curl tidak dioptimalkan untuk streaming video. Tapi bagaimana dengan SFTP? Itu harus sepotong kue.

Masalah konfigurasi?

Tes terakhir di atas (sdcard cache) menarik. Itu mulai memutar video, setelah memuat sekitar 150M (!) Pada sdcard ( .kodi/temp/filecache000.cache). Meskipun berjalan dengan baik, ini bukan solusi yang layak karena terlalu lambat untuk memulai.

Tampaknya mencoba mengunduh jumlah RAM yang sama, mengabaikan konfigurasi di advancedsettings.xml. Saya memeriksa, file dimuat tanpa masalah. Ini adalah contoh dari sesuatu yang saya uji ( .kodi/userdata/advancedsettings.xml):

<advancedsettings>
    <network>
        <buffermode>1</buffermode>
        <cachemembuffersize>5242880</cachemembuffersize>
        <readbufferfactor>4.0</readbufferfactor>
        <curlclienttimeout>60</curlclienttimeout>
        <curllowspeedtime>20</curllowspeedtime>
    </network>
</advancedsettings>

Catatan: beberapa opsi ini tidak lagi benar di kodi 17, lihat jawaban @ZacWolf untuk pembaruan

Jadi, ada yang punya ide? Apa yang salah di sini? Apa pun solusinya, saya juga ingin tahu mengapa penggunaan normal (RAM buffer) gagal dalam kasus ini.

EDIT: Tes di Archlinux

Saya menginstal kodi di Archlinux, untuk menentukan apakah itu masalah kodi atau openelec. Itu sama: video HD berombak, jadi sepertinya ada bug di kodi. Ini lebih seperti masalah protokol (SFTP dan WebDAV: http) karena pengujian saya dengan SSHFS bekerja sangat baik. Sayangnya, tidak mudah untuk menginstal SSHFS di openelec.

EDIT 2: Solusi

Saya menulis di sini, karena tidak secara langsung mengatasi masalah buffering, tetapi saya telah menginstal kodi di Archlinux selama lebih dari satu tahun sekarang, dan itu berfungsi dengan sangat baik. Ini lebih ramah-noob daripada openelec, tetapi bagi mereka yang tertarik:

  • Instal Archlinux untuk ARM (sangat mudah, cukup ikuti panduan - ini untuk rpi1, untuk yang lebih baru, cukup ubah platform);
  • Instal Kodi ( ikuti panduan wiki Archlinux - pada dasarnya, instal kodi-rbppaket);
  • Mengaktifkan layanan kodi untuk secara otomatis menjalankan kodi pada startup: # systemctl enable kodi.service;
  • Instal SSHFS: pacman -Suy sshfs;
  • Gunakan sangat berguna SSHFS automounting dengan /etc/fstabme-mount share jauh Anda.

Selesai Jangan lupa untuk memperbarui frenquently ( pacman -Suy).

Bendera
sumber
150 MB mungkin berada di sisi atas, tetapi 5 MB mungkin terlalu rendah untuk ~ 1 MB / s konten bitrate jika Anda ingin menghindari kecerobohan. Saya akan membuang paranoia tentang kartu SD. Anda membelinya untuk digunakan bukan? Jika tidak, itu akan lebih aman di lemari yang sejuk dan kering di suatu tempat.
goldilocks
Terima kasih atas perhatianmu. Tapi, ketahuilah pertanyaan saya bukan tentang buffer sdcard saja. Kedua, 150M, pada ~ 1MB / s ... Ya, 150-an. Ini sangat kepalang. Apakah ada opsi untuk mengubah ukuran buffer saat menggunakan sdcard? Ini bisa menjadi solusi. Lalu, berapa pun ukuran cache, itu akan memuat seluruh video (kadang-kadang beberapa GB) pada sdcard, bukan hanya buffer. Saya tahu, sdcard murah. Itu bukan masalah besar. Aku tahu. Tetapi mengapa saya harus repot tentang sdcard sementara RAM harus bekerja?
Gui-Don
Maaf - saya mengurangi itu sedikit setelah meliriknya. Saya belum pernah menggunakan Kodi jadi saya tidak bisa banyak membantu di sini, itu hanya pengamatan umum. IMO, buffering ke disk adalah strategi yang lebih baik daripada buffering ke RAM karena jika Anda mengisi RAM 100%, sistem tidak memiliki cache disk yang tersisa yang akan berdampak nyata pada semua aspek operasi. Namun, jika Anda tidak mengisi RAM dan tidak ada yang lain, apa yang Anda tulis ke (dan secara simultan membaca dari) disk tentu akan dimasukkan ke dalam cache disk - yaitu, RAM, tetapi dikelola secara dinamis oleh kernel, yang merupakan apa yang membuat ini strategi yang lebih baik.
goldilocks
Dalam hal itu tidak jelas: OS menggunakan sebanyak mungkin RAM yang tidak dikomit untuk caching (saya menyebut ini di atas sebagai "disk cache", yang sedikit keliru, tetapi menekankan fakta bahwa biasanya sebagian besar barang sering dibaca dari disk ). Pada pi itu tidak biasa untuk itu semua RAM tidak berkomitmen, ini adalah angka "buffer" dari free- jadi sesuatu yang menarik dalam posting Anda adalah kenyataan bahwa jumlah ini relatif kecil. Jika Anda meningkatkan cache ke-disk Kodi, angka itu dapat / harus meningkat saat beraksi untuk mencocokkannya.
goldilocks
1
Saya melihat;) OK, saya mengerti menggunakan disk lebih baik daripada mengisi RAM. Ini adalah solusi yang baik untuk membuatnya bekerja, jika saya dapat mengurangi ukuran buffer yang diperlukan untuk memutar video. BTW, tampaknya persentase, bukan jumlah absolut. Tetap saja, saya ingin tahu tentang apa yang terjadi di sini. Sungguh aneh saya mendapat begitu banyak RAM yang tidak digunakan, bahkan saat video sedang buffering.
Gui-Don

Jawaban:

2

EDIT (12/2017)

Kodi v17 mengganti nama dan memindahkan tag di advancedsetting.xml

<cachemembuffersize> diganti namanya menjadi <memorysize>

<readbufferfactor> diganti namanya menjadi <readfactor>

DAN mereka telah dihapus dari <network> dan ditambahkan ke <cache>

Advancesettings.xml saya sekarang terlihat seperti:

<?xml version="1.0" encoding="utf-8"?>
<advancedsettings>
        <cache>
                <memorysize>524288000</memorysize>
                <buffermode>1</buffermode>
                <readfactor>6</readfactor>
        </cache>
</advancedsettings>
ZacWolf
sumber
Ini khusus untuk perangkat Vero4K, yang memiliki lebih banyak memori daripada Pi, jadi Anda harus mengubah pengaturan ini khusus untuk memori yang tersedia.
ZacWolf
1

Saya menjalankan Pi 3 dengan OpenElec di atasnya dan saya mengalami banyak masalah buffering juga.

Saya streaming ke sana melalui Wi-Fi karena saya pikir itu tepat di sebelah router dan seharusnya tidak memiliki masalah. Nah setelah menghubungkan melalui Ethernet saya harus menghapus file xml lanjutan bersama-sama ketika masalah buffering berhenti.

Laptop dan ponsel saya berfungsi dengan baik melalui Wi-Fi tanpa buffering jadi ada sesuatu dengan Wi-Fi built-in Pi 3 pada OpenElec yang menyebabkan masalah.

Marcus
sumber
Saya senang Anda memperbaiki masalah Anda dan saya yakin itu akan membantu banyak orang yang mengalami masalah ini. Dalam kasus saya, saya menggunakan ethernet dari awal. Untuk rpi1 saya tidak berpikir ini solusinya. Yang sedang berkata, aneh Anda memiliki masalah yang sama pada rpi3, karena memiliki RAM dua kali lebih banyak dari rpi1 ... Saya bisa saja salah tetapi sepertinya penanganan cache pada kodi hanya jelek.
Gui-Don
-1

Saya memiliki masalah yang sama dan saya menggunakan 'retasan' ini , semuanya berjalan lancar sekarang.

--- sunting --- Mengikuti saran @Simulant:

  • Instal alat pemeliharaan xunity.
  • Masuk ke program (bukan pengaturan), xunity - tweak.
  • Pilih 'Tambah 0 Cache Advanced XML
Meir
sumber
1
Harap sebariskan fakto kunci dari sumber tertaut Anda. Kalau tidak, jika sumber tertaut akan offline pos Anda tidak akan berguna.
Simulant
1
Bukankah Xunity hanya GUI untuk tujuan itu? Maksud saya, apa bedanya dengan mengubah sendiri file advancedsettings.xml ? Sebenarnya, saya melakukan pengaturan tanpa cache, ini cara memperlambat memuat untuk video SFTP atau webdav.
Gui-Don
Itu adalah gui. Tapi dari pengalaman saya, mengedit langsung bisa rumit (karena izin dll). Addon berfungsi dengan baik, saya menggunakannya :-)
Meir