mp4-rust
mp4-rust copied to clipboard
Streaming reads
Hi! Thanks for writing this lib!
Have you thought about the case of streaming reads? It seems the API is centered around Mp4Reader::read_sample(track_id, sample_id)
which in turn delegates to Track::read_sample
. Reading the code it seems the latter assumes a reader.seek(SeekFrom::Start(sample_offset))?;
With very large files, or continuous TS-streams, it's not necessarily practical to assume the whole things can be wrapped in a BufReader.
Would it be possible to extend the API somehow to have more of a "read-next-sample-whatever-it-is" approach? Happy to contribute a PR.
Hey @lolgesten,
Thanks for the input and suggestion. I admit most of the sample bytes I have worked with have been small enough to be wrapped into a buffer when reading each sample, but I agree it can be improved.
I would appreciate a PR if you have the time for it. :)
Just to not: generally, I think, mp4 is not really designed to be streamable =(
There are some things that can be done to make it so: https://trac.ffmpeg.org/wiki/HowToCheckIfFaststartIsEnabledForPlayback