mp4-rust icon indicating copy to clipboard operation
mp4-rust copied to clipboard

Streaming reads

Open lolgesten opened this issue 3 years ago • 2 comments

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.

lolgesten avatar Apr 08 '21 10:04 lolgesten

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. :)

alfg avatar Apr 08 '21 17:04 alfg

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

DCNick3 avatar Feb 14 '23 21:02 DCNick3