8 releases (4 breaking)
0.5.2 | Jul 9, 2024 |
---|---|
0.5.1 | Jul 9, 2024 |
0.4.2 | Jul 9, 2024 |
0.3.0 | Jul 1, 2019 |
0.1.0 | Jan 4, 2019 |
#55 in Video
1,565 downloads per month
Used in 3 crates
(2 directly)
28KB
640 lines
Stream Lib
This library makes it possible to download various types of video streams. Currently it supports HLS and chunked http streams.
Example
use futures_util::StreamExt as _;
use reqwest::Client;
use stream_lib::Event;
use tokio::io::AsyncWriteExt;
/// Write buffer
pub const WRITE_SIZE: usize = 131_072;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt::init();
let args = std::env::args().collect::<Vec<_>>();
let url = args.get(1).expect("Pass a url as the first argument");
let http = Client::new();
let req = http.get(url).build()?;
let mut dl = stream_lib::download_hls(http, req, None);
let mut file = tokio::io::BufWriter::with_capacity(
WRITE_SIZE,
tokio::fs::File::create("./example.mp4").await?,
);
while let Some(event) = dl.next().await {
match event {
Event::Bytes { bytes } => {
file.write_all(&bytes).await?;
}
Event::End => break,
Event::Error { error } => {
eprintln!("Encounted error: {}", error);
break;
}
}
}
Ok(())
}
Dependencies
~9–20MB
~269K SLoC