Sempre que tento transmitir vídeos pesados (principalmente 1080p) através da rede (webdav, sftp ...), ele falha ou aparece a mensagem “o cache está cheio” etc. Os vídeos começam a ser reproduzidos, mas param aleatoriamente (para armazenar novamente em buffer) , Eu acho).
Sei que esse é um problema comum e sei os ajustes que posso fazer ( enrolar também).
O ambiente:
Eu uso um RPi modelo B e tenho uma conexão de internet de 100M / b. Eu tenho testado com o Kodi 14.2 e o Kodi 15 (openelec 5.0.7, openelec 5.95.2).
Os testes:
Até agora, entre muitas opções adicionais, é isso que tentei:
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
--------------------------------------------------------------------------
Problema de vídeo?
Não. Se copiado no cartão SD, ele funciona sem problemas.
Problema de RAM?
Eu entenderia a limitação de hardware se a RAM estivesse cheia, mas, enquanto assiste a vídeos, free -m
me dá o seguinte:
total used free shared buffers
Mem: 373 236 137 4 34
-/+ buffers: 202 171
Swap: 0 0 0
Parece que há muitas disponíveis ...
Fato interessante, como @goldilocks notou, os buffers são extraordinariamente baixos.
Problema de rede?
Se eu estiver baixando um arquivo de vídeo manualmente com SFTP, ao reproduzir esse mesmo arquivo ao mesmo tempo, ele funcionará. Velocidade de download: ~ 1.5MB / s. Portanto, nem a rede, nem a descriptografia são um gargalo.
Outro problema?
Erros no arquivo de log (com depuração de vídeo, depuração de ffmpeg), exceto depuração e avisos:
ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting
OK, então o enrolamento não é otimizado para streaming de vídeo. Mas e o SFTP? Deve ser um pedaço de bolo.
Problema de configuração?
O último teste acima (cache do sdcard) é interessante. Ele começa a reproduzir o vídeo, após descarregar cerca de 150M (!) No sdcard ( .kodi/temp/filecache000.cache
). Embora funcione bem, não é uma solução viável, pois é muito lento para iniciar.
Parece tentar baixar a mesma quantidade de RAM, ignorando a configuração advancedsettings.xml
. Eu verifiquei, o arquivo é carregado sem nenhum problema. Este é um exemplo de algo que testei ( .kodi/userdata/advancedsettings.xml
):
<advancedsettings>
<network>
<buffermode>1</buffermode>
<cachemembuffersize>5242880</cachemembuffersize>
<readbufferfactor>4.0</readbufferfactor>
<curlclienttimeout>60</curlclienttimeout>
<curllowspeedtime>20</curllowspeedtime>
</network>
</advancedsettings>
Nota: algumas dessas opções não estão mais corretas no kodi 17, consulte a resposta do @ZacWolf para atualização
Então, alguém tem alguma ideia? Oque pode estar errado aqui? Qualquer que seja a solução, também quero saber por que o uso normal (buffer RAM) falha nesse caso.
EDIT: Teste no Archlinux
Instalei o kodi no Archlinux, para determinar se é um problema do kodi ou do openelec. É o mesmo: vídeos em HD são instáveis, então parece ser um bug no kodi. É mais como um problema de protocolo (SFTP e WebDAV: http) porque meu teste com SSHFS funciona muito bem. Infelizmente, não é trivial instalar o SSHFS no openelec.
EDIT 2: Uma solução alternativa
Eu o escrevo aqui, porque ele não soluciona diretamente o problema de buffer, mas eu instalei o kodi no Archlinux há mais de um ano e funciona perfeitamente bem. É menos amigável para noob do que o openelec, mas para aqueles que estão interessados:
- Instale o Archlinux for ARM (muito fácil, basta seguir o guia - é para o rpi1, para o mais recente, basta alterar a plataforma);
- Instale o Kodi ( siga o guia wiki do Archlinux - basicamente, instale o
kodi-rbp
pacote); - Ative o serviço kodi para executar automaticamente kodi na inicialização:
# systemctl enable kodi.service
; - Instale SSHFS:
pacman -Suy sshfs
; - Use as muito úteis SSHFS automontagem com
/etc/fstab
a montar sua parte distante.
Feito. Não se esqueça de atualizar com freqüência ( pacman -Suy
).
free
- portanto, algo interessante em seu post é o fato de esse número ser relativamente pequeno. Se você aumentar o cache em disco do Kodi, esse número poderá / deverá aumentar enquanto estiver em ação para igualá-lo.