[theora-dev] How to get the duration of a file or track?
Conrad Parker
conrad at metadecks.org
Mon Aug 27 21:47:40 PDT 2007
On 28/08/07, Shane Stephens <shane.stephens at gmail.com> wrote:
>
> Please note that oggzinfo actually passes right through the file twice in
> order to gather these statistics - this is not necessary if you simply want
> to determine the Content-Duration. I'm also not 100% sure whether liboggz
> correctly supports chained oggs.
liboggz doesn't make any attempt to handle chaining -- for normal
reading, it simply calls page/packet callbacks as it sees them.
Consequently, oggzinfo will report info for the bitstreams in each
chain of a file, but does not take chains into account. As a result it
gets the duration and bitrates for chained files wrong.
liboggz and oggz-tools need at least the following to handle chained files:
- seeking should take chains into account
- reading should report chain boundaries (eg. a "new chain" callback)
- writing should allow writing of chains (currently you would
basically need to create a new OGGZ* writer for each chain, attached
to the same fd)
- oggzinfo should calculate duration for each chain, sum durations
for the whole file, and use per-chain duration for bitrate calculation
Further:
- oggz-validate, oggzrip, oggzdump, oggzdiff already handle chained files ok
- oggz-scan handles chained files, but reports scene-change times
relative to chain start
- oggzmerge: it would be non-trivial to merge chained files unless
the chain durations matched.
cheers,
Conrad.
More information about the theora-dev
mailing list