-
-
Notifications
You must be signed in to change notification settings - Fork 240
Description
Description
The current SMB client used by Nova Video Player shows significant performance limitations when accessing high-bitrate 4K REMUX content (70–120 Mbps). Under the same network conditions, other Android players such as Dangbei Player(当贝播放器) from China can handle these files much more smoothly, suggesting that Nova’s bottleneck is largely tied to its SMB client implementation rather than device/network limitations.
To improve robustness and throughput, I would like to propose evaluating a more mature SMB client library—specifically libsmb2 (modern, actively maintained C SMB2/3 client library) or an optimized integration of it.
Why libsmb2?
libsmb2 is:
Fully open-source
Lightweight but capable
Implements SMB2/SMB3 properly
Known for significantly better throughput and connection stability than many Android-bundled SMB clients
Already used by several high-performance media applications
Expected improvements
A more complete or optimized libsmb2 integration could bring:
Higher sustained throughput for 4K/8K high-bitrate files
Better buffering behavior and reduced stutter
More stable long-duration playback
Greater compatibility with Samba-based NAS, Linux servers, and Windows SMB 3.1.1 hosts
Fewer connection drops or read slowdowns
For users whose libraries are stored on NAS/PC servers, SMB is often the primary protocol. Improving the SMB stack would therefore make a noticeable difference in everyday playback experience.
If NFS support is not planned, enhancing SMB via a stronger libsmb2-based implementation seems to be the most beneficial improvement for high-bitrate media playback on Nova.Better than WebDAV or SFTP for this specific use case.
Thank you for considering this request, and for your ongoing work on Nova Video Player!
Additional note on SMB client libraries and performance:
Dangbei Player(当贝播放器) achieves excellent SMB performance because it uses a native C-based SMB2/SMB3 client, very likely based on libsmb2 or a customized implementation of it.
libsmb2 is known to deliver the best throughput and lowest latency for high-bitrate 4K/8K media streaming due to its native C implementation, efficient buffering, and proper SMB2/3 credit handling.
In comparison:
smbj (Java) performs well for general file access but is not ideal for high-bitrate streaming due to Java I/O and GC overhead.
jcifs-ng is also Java-based and not designed for modern high-throughput streaming workflows.
For media players on Android/TV, a libsmb2-based client consistently outperforms Java SMB libraries in sustained bitrate, seek latency, and long-duration stability.
Therefore, upgrading Nova’s SMB client implementation (e.g., using libsmb2 or a similarly robust native SMB2/3 client) would significantly improve streaming stability and performance—especially for 70–120 Mbps REMUX playback.
Additional information
Proposed SMB client library:
libsmb2 (actively maintained SMB2/SMB3 client library)
GitHub: https://github.com/sahlberg/libsmb2
libsmb2 is lightweight, modern, and designed specifically for efficient SMB2/SMB3 communication. Its performance and stability make it widely used in high-throughput file-access scenarios, including media streaming. Adopting or upgrading to libsmb2 (or a more complete integration of it) could significantly improve Nova’s SMB performance.