I use recordMyDesktop v0.3.8.1 on Ubuntu 11.04 to capture an .ogv
of my session. After I'm done, I open the .ogv
in VLC media player 1.1.9 The Luggage; this is how it looks like:
... notably, there is no lenght - and additionally, seeking is horrible.
Now, one might blame this on old software etc - but then, I download
http://archive.org/download/Elephants_Dream_teaser_2/elephantsdream_teaser.ogv
... and open that in the same version of VLC - and lo and behold:
... the duration of that file is recognized by VLC; and in addition, seeking works relatively well!
So, I try to compare these two files using oggz-info
:
$ oggz-info ./out.ogv ./elephantsdream_teaser.ogv
Filename: ./out.ogv
Content-Duration: 00:00:34.916
Skeleton: serialno 1766583216
3 packets in 3 pages, 1.0 packets/page, 36.842% Ogg overhead
Presentation-Time: 0.000
Basetime: 0.000
Theora: serialno 0666666463
842 packets in 56 pages, 15.0 packets/page, 0.593% Ogg overhead
Theora-Version: 3.2.1
Video-Framerate: 24.000 fps
Video-Width: 640
Video-Height: 480
------------------------------------------------------------
Filename: ./elephantsdream_teaser.ogv
Content-Duration: 00:01:15.228
Theora: serialno 3398283591
1799 packets in 310 pages, 5.8 packets/page, 0.594% Ogg overhead
Theora-Version: 3.2.1
Video-Framerate: 24.000 fps
Video-Width: 532
Video-Height: 300
Vorbis: serialno 4073121151
3295 packets in 76 pages, 43.4 packets/page, 0.821% Ogg overhead
Audio-Samplerate: 44100 Hz
Audio-Channels: 2
... and the only thing I can notice is: ./out.ogv
has a skeleton, but no audio; ./elephantsdream_teaser.ogv
has no skeleton, but has audio track. I don't think the audio is the main difference here, as I've taken recordmydesktop
s with audio, and they behave the same - and I also have removed the skeleton from those videos using oggCat
, to no improvement in VLC.
I am aware that: (Configuring servers for Ogg media - HTTP | MDN):
The Ogg format doesn't encapsulate the duration of media
(Getting the length of a ogg track from s3 without downloading the whole file):
The way to [get length] is to use HTTP range requests to fetch the end of the file, find the last Ogg page, and extract the timestamp from it.
a video stream consists of I-frames (which are full pictures) and P-frames (which are delta pictures to the leading I-frame)
(Thundering Herd: Indexing keyframes in Ogg videos for fast seeking)
when we seek an Ogg/Theora video to a target time, we must perform a bisection search over the file in order to find the target Theora video frame ... If we knew in advance where the keyframes were, we wouldn't need to do any bisection searches
So, the difference between the out.ogv
from recordmydesktop
, and elephantsdream_teaser.ogv
, in terms of performance in VLC, must have something to do with keyframes. So my questions are:
- What sort of tool can I use, to inspect the difference between these two files in terms of existence and ammount of keyframes?
- What sort of tool can I use, to convert
out.ogv
to a version that behaves the same in VLC (showing duration, and with reasonable seeking times) as theelephantsdream_teaser.ogv
does - hopefully, without lossy re-encoding?