A Rust library for streaming audio, video, and other content from remote sources with read and seek support.
stream-download is a Rust library that streams audio, video, or any other content from remote sources while providing a seekable and readable interface. It solves the problem of accessing large media files or live streams without waiting for full downloads, enabling applications to start playback or processing immediately.
Rust developers building media applications, audio/video players, or tools that require efficient streaming and random access to remote content, such as podcast clients, music streamers, or video processing pipelines.
Developers choose stream-download for its modular design, support for various transports and storage backends, and seamless handling of both finite and infinite streams, all within a lightweight, async-first Rust library.
A Rust library for streaming audio, video, and other content
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports HTTP, AsyncRead, and external processes via adapters, enabling easy integration with custom sources like yt-dlp for YouTube streaming, as shown in the examples.
Offers memory, temporary file, bounded, and adaptive storage options, allowing optimized caching for both finite and infinite streams, detailed in the storage module.
Handles live or unknown-length streams with bounded storage to prevent unbounded growth, as explained in the infinite stream support section.
Includes automatic retry for stalled streams and reqwest-middleware integration for customizable retry policies, with examples provided.
Configuring transports, storage, and error handling requires understanding multiple components, leading to verbose code as seen in the usage examples.
Beyond HTTP, custom protocols need separate implementations, with OpenDAL suggested as an external crate, indicating added dependency management.
For small files or basic downloads, the streaming infrastructure adds unnecessary latency and resource usage compared to direct HTTP clients like reqwest alone.