Mỗi lần tôi cố phát trực tuyến các video nặng (chủ yếu là 1080p) qua mạng (webdav, sftp ...), nó sẽ thất bại hoặc tôi nhận được thông báo Bộ nhớ cache đã đầy đủ, v.v. Video bắt đầu phát, nhưng dừng lại ngẫu nhiên (để đệm lại , Tôi đoán).
Tôi biết đây là một vấn đề phổ biến và tôi biết các chỉnh sửa tôi có thể làm ( curl quá).
Môi trường:
Tôi sử dụng mô hình RPi B và tôi có kết nối internet 100M / b. Tôi đã thử nghiệm với Kodi 14.2 và Kodi 15 (openelec 5.0.7, openelec 5.95.2).
Các bài kiểm tra:
Cho đến nay, trong số nhiều lựa chọn bổ sung, đây là những gì tôi đã thử:
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
--------------------------------------------------------------------------
Vấn đề về video?
Không. Nếu sao chép trên thẻ sd, nó chạy trơn tru.
Vấn đề về RAM?
Tôi sẽ hiểu giới hạn phần cứng nếu RAM đầy, nhưng, trong khi xem video, free -m
mang lại cho tôi điều này:
total used free shared buffers
Mem: 373 236 137 4 34
-/+ buffers: 202 171
Swap: 0 0 0
Có vẻ như có rất nhiều ...
Thực tế thú vị, như @goldilocks nhận thấy, bộ đệm thấp bất thường.
Sự cố mạng?
Nếu tôi đang tải xuống một tệp video bằng tay với SFTP, trong khi phát cùng một tệp này cùng một lúc, nó sẽ hoạt động. Tốc độ tải xuống: ~ 1,5MB / s. Vì vậy, không phải mạng, cũng không phải giải mã là một nút cổ chai.
Vấn đề khác?
Lỗi trong logfile (với gỡ lỗi video, gỡ lỗi ffmpeg), ngoại trừ gỡ lỗi và thông báo:
ERROR: CCurlFile::FillBuffer - Failed: Timeout was reached
ERROR: OMXPlayerVideo: Got MSGQ_IS_ERROR(-1) Aborting
OK, vì vậy curl không được tối ưu hóa để truyền phát video. Nhưng còn SFTP thì sao? Nó nên là một miếng bánh.
Vấn đề cấu hình?
Thử nghiệm cuối cùng ở trên (bộ nhớ cache sdcard) rất thú vị. Nó bắt đầu phát video, sau khi tải xuống khoảng 150M (!) Trên sdcard ( .kodi/temp/filecache000.cache
). Mặc dù nó chạy tốt, nhưng nó không phải là một giải pháp khả thi vì nó quá chậm để bắt đầu.
Có vẻ như cố gắng tải xuống cùng một lượng RAM, bỏ qua cấu hình trong advancedsettings.xml
. Tôi đã kiểm tra, các tập tin được tải mà không có bất kỳ vấn đề. Đây là một ví dụ về một cái gì đó tôi đã thử nghiệm ( .kodi/userdata/advancedsettings.xml
):
<advancedsettings>
<network>
<buffermode>1</buffermode>
<cachemembuffersize>5242880</cachemembuffersize>
<readbufferfactor>4.0</readbufferfactor>
<curlclienttimeout>60</curlclienttimeout>
<curllowspeedtime>20</curllowspeedtime>
</network>
</advancedsettings>
Lưu ý: một số tùy chọn này không còn đúng trong kodi 17, xem câu trả lời @ZacWolf để cập nhật
Vì vậy, ai đó có ý tưởng gì? Điều gì có thể sai ở đây? Dù là giải pháp nào, tôi cũng muốn biết tại sao sử dụng bình thường (bộ đệm RAM) không thành công trong trường hợp này.
EDIT: Thử nghiệm trên Archlinux
Tôi đã cài đặt kodi trên Archlinux, để xác định xem đó là sự cố kodi hay openelec. Điều này cũng tương tự: Các video HD rất khó hiểu, vì vậy nó dường như là một lỗi trong kodi. Nó giống như một vấn đề về giao thức (SFTP và WebDAV: http) vì thử nghiệm của tôi với SSHFS hoạt động rất tốt. Thật không may, cài đặt SSHFS trên openelec không phải là chuyện nhỏ.
EDIT 2: một cách giải quyết
Tôi viết nó ở đây, vì nó không trực tiếp giải quyết vấn đề đệm, nhưng tôi đã cài đặt kodi trên Archlinux hơn một năm nay và nó hoạt động rất tốt. Nó ít thân thiện hơn so với openelec, nhưng đối với những người quan tâm:
- Cài đặt Archlinux cho ARM (rất dễ dàng, chỉ cần làm theo hướng dẫn - đó là cho rpi1, đối với phiên bản mới hơn, chỉ cần thay đổi nền tảng);
- Cài đặt Kodi (làm theo hướng dẫn wiki Archlinux - về cơ bản, cài đặt
kodi-rbp
gói); - Cho phép dịch vụ kodi tự động chạy kodi khi khởi động :
# systemctl enable kodi.service
; - Cài đặt SSHFS :
pacman -Suy sshfs
; - Sử dụng rất hữu ích SSHFS automounting với
/etc/fstab
để gắn phần xa xôi của bạn.
Làm xong. Đừng quên cập nhật frenquently ( pacman -Suy
).
free
- vì vậy một điều thú vị trong bài viết của bạn là con số này tương đối nhỏ. Nếu bạn tăng bộ đệm vào đĩa của Kodi, con số đó có thể / nên tăng trong khi hoạt động để khớp với nó.