Open shellvon opened 5 years ago
Hey @shellvon , thanks for submitting the issue. Right now the duration value for fragmented mp4s should be ignored by the browsers, which is why we haven't added it. We'll take another look at the spec though to see if we'll run into any trouble by setting it (and if it might be a good idea).
If you just want to calculate the duration outside of the normal transmuxer flow, you should be able to use inspect
https://github.com/videojs/mux.js/blob/master/lib/tools/ts-inspector.js#L490 to grab start and end values of a segment.
@gesinger Thanks for your reply. inspect
is a good choice to calculate the duration. I also know the correct duration according to the m3u8 file (parsed by m3u8-parser). but i have not way to change the correct duration to the tracks data until generate the mp4 file. Is there any API for this purpose ?
Sorry for the delay, there is not an API for this right now @shellvon .
All right ,thank you all the same, @gesinger. Is there any discussion result now? I am still waiting for your good news.
I had fixed this problem by adding an muxjs.mp4.Transmuxer option 「duration」,can specify mp4 duration。 read PR https://github.com/videojs/mux.js/pull/354 for more detail the fixed result you can see my fork https://github.com/Momo707577045/mux.js
I believe that this is actually really important, because Chrome seems to use the duration as a heuristic to determine whether to enable low latency mode in MSE.
Any updates?
When I try to generate the mp4 file by use mux.js, I got wrong duration time in generated mp4 file, the result time is aways
0xffffffff
=>13:15:24
。 It's a default value: https://github.com/videojs/mux.js/blob/55c1d56c27001bc6d50e527db6649edd73e0f69c/lib/mp4/mp4-generator.js#L613How to calculate the correct duration according the MPEG2-TS packets by use mux.js? Or How I change the correct duration before call the method
mp4.initSegment(this.pendingTracks);
in lib/mp4/transmuxer.js#L835-L842 or earlieri added an event listener with some code like this: