Skip to content

[FEAT] Improve SMB performance by adopting a more robust SMB client implementation (e.g., updated/optimized libsmb2) #1651

@gabrielliu39-cmyk

Description

@gabrielliu39-cmyk

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions