flowly-mpegts 0.2.0

Mpeg2Ts format streaming parser
Documentation
use std::pin::pin;

use flowly::{Service, ServiceExt, io::file::FileReader};
use flowly_flv::FlvDemuxer;
use flowly_mpegts::Mpeg2TsMuxer;
use futures::TryStreamExt;
use tokio::{fs::File, io::AsyncWriteExt};

#[tokio::main]
async fn main() {
    let mut out = File::create("/home/andrey/demo.ts").await.unwrap();

    let flow = flowly::flow() //-
        .flow(FileReader::default())
        .flow(FlvDemuxer::default())
        .flow(Mpeg2TsMuxer::default());

    let mut stream = pin!(flow.handle(futures::stream::iter([Ok::<_, std::io::Error>(
        "/home/andrey/demo/h264/terminator.flv"
    )])));

    while let Some(data) = stream.try_next().await.unwrap() {
        out.write_all(&data).await.unwrap();
    }
}