<h1>What is Ogg Skeleton?</h1>

<p>From <a href="http://wiki.xiph.org/Ogg_Skeleton_4" rel="nofollow">Ogg Skeleton 4</a>:</p>

<blockquote>
  <p>Ogg Skeleton provides structuring information for multitrack Ogg
  files. It is compatible with Ogg Theora and provides extra clues for
  synchronization and content negotiation such as language selection.
  The latest version of Skeleton, version 4.0, also provides keyframe
  indexes to enable optimal seeking over high-latency connections, such
  as the internet.</p>
</blockquote>

<p>So basically the Ogg container can support multiple tracks of multiple track types types. However:</p>

<blockquote>
  <p>Ogg does not know anything about the content it carries and leaves it
  to the media mapping of each codec to declare and describe itself.
  There is no meta information available at the Ogg level about the
  content tracks encapsulated within an Ogg physical bitstream.</p>
</blockquote>

<p>Ogg Skeleton attempts to deal with these issues by providing information about the other streams that allows parsing and (de)muxing <strong>without having to decode</strong>.</p>

<h1>What is stored inside such a stream?</h1>

<blockquote>
  <p>Ogg Skeleton is a logical bitstream within an Ogg stream that contains
  information about the other encapsulated logical bitstreams. For each
  logical bitstream it provides information such as its media type, and
  explains the way the granulepos field in Ogg pages is mapped to time.</p>
</blockquote>

<p>See <a href="http://svn.annodex.net/standards/draft-pfeiffer-oggskeleton-current.txt" rel="nofollow">The "skeleton" meta information track for Ogg</a> for more details.</p>

<h1>Is it necessary to play the media file?</h1>

<p>Continuing from the second quoted paragraph:</p>

<blockquote>
  <p>This is particularly a problem if you don't have all the decoder
  libraries available and just want to parse an Ogg file (such as with <code>file</code>)  to find out what type of data it encapsulates.</p>
</blockquote>

<ul>
<li><p>For playback <strong>you are decoding</strong>.</p></li>
<li><p>You're using (libogg/libvorbis/libtheora and) the FFmpeg cli tools (or should be; I don't recommend Libav) to demux and decode. You have the various decoder libraries available. You can <a href="https://ffmpeg.org/download.html" rel="nofollow">download a recent build of <code>ffmpeg</code></a>.</p></li>
<li><p>Your file is not complicated. It just contains one video stream, one video stream, and one data stream (the Ogg Skeleton). It does not contain multiple streams of video, audio, subtitles, etc.</p></li>
<li><p>Ogg Skeleton 4.0 can index keyframes for seeking in high latency situations. Given the information you (did not) provide I'm going to assume this does not apply to you.</p></li>
</ul>

<p>So the answer here is: <strong>Ogg Skeleton is not necessary to play this media file</strong>.</p>

<p>You can test this by remuxing the file while excluding the data stream with a negative mapping:</p>

<pre><code>ffmpeg -i input.ogv -map 0 -map -0:d -c copy output.ogv
</code></pre>

<p>Now try playing it.</p>

CC BY-SA 3.0
2015-03-17T03:07:35.783Z
2015-03-17T03:13:13.127Z
2015-03-17T03:13:13.127Z
llogan
<p><strong>My Question:</strong> I made a screencast with <a href="http://recordmydesktop.sourceforge.net/news.php" rel="nofollow">recordmydesktop</a> (Version 0.3.8.1). When I investigate the rendered file with <a href="https://duckduckgo.com/l/?kh=-1&amp;uddg=https%3A%2F%2Flibav.org%2Favprobe.html" rel="nofollow"><code>avprobe</code></a> I see, that there is <code>Stream #0.0: Data: skeleton</code> in the produced file. I guess <code>ffprobe</code> will produce the same results...</p>

<p>What is "Data: Skeleton"? What is stored inside such a stream? Is it necessary to play the media file?</p>

<p><strong>What I did:</strong> First I record a part of my screen via</p>

<p>recordmydesktop --height 10 --width 10 -y 50</p>

<p>Now I run <code>avprobe out.ogv</code> an I get as a result</p>

<pre><code>avprobe version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2007-2014 the Libav developers
  built on Aug 10 2014 18:19:26 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[ogg @ 0x93aa700] Multiple fisbone for the same stream is not implemented. Update your Libav version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[ogg @ 0x93aa700] 22 bytes of comment header remain
[ogg @ 0x93aa700] truncated comment header, 1 comments not found
[ogg @ 0x93aa700] max_analyze_duration reached
Input #0, ogg, from 'out.ogv':
  Duration: 00:00:06.93, start: 0.000000, bitrate: 9 kb/s
    Stream #0.0: Data: skeleton
    Stream #0.1: Video: theora, yuv420p, 16x16 [PAR 1:1 DAR 1:1], 15 tbn, 15 tbc
    Stream #0.2: Audio: vorbis, 22050 Hz, mono, fltp, 89 kb/s
Unsupported codec with id 0 for input stream 0
</code></pre>

<p>When you want to investigate the video file by yourself, you can download it at <a href="http://www38.zippyshare.com/d/BaItXEdB/2145/out.ogv" rel="nofollow">http://www38.zippyshare.com/d/BaItXEdB/2145/out.ogv</a></p>

<ffmpeg><codec><avconv>
What means "Data: Skeleton" in an .ogv file?
Stephan Kulla
# What means "Data: Skeleton" in an .ogv file?

(Asked by: username_0 on 2015-03-16)

My Question: I made a screencast with recordmydesktop (Version 0.3.8.1). When I investigate the rendered file with avprobe I see, that there is Stream #0.0: Data: skeleton in the produced file. I guess ffprobe will produce the same results...
What is "Data: Skeleton"? What is stored inside such a stream? Is it necessary to play the media file?
What I did: First I record a part of my screen via
recordmydesktop --height 10 --width 10 -y 50
Now I run avprobe out.ogv an I get as a result
avprobe version 9.16-6:9.16-0ubuntu0.14.04.1, Copyright (c) 2007-2014 the Libav developers
  built on Aug 10 2014 18:19:26 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[ogg @ 0x93aa700] Multiple fisbone for the same stream is not implemented. Update your Libav version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
[ogg @ 0x93aa700] 22 bytes of comment header remain
[ogg @ 0x93aa700] truncated comment header, 1 comments not found
[ogg @ 0x93aa700] max_analyze_duration reached
Input #0, ogg, from 'out.ogv':
  Duration: 00:00:06.93, start: 0.000000, bitrate: 9 kb/s
    Stream #0.0: Data: skeleton
    Stream #0.1: Video: theora, yuv420p, 16x16 [PAR 1:1 DAR 1:1], 15 tbn, 15 tbc
    Stream #0.2: Audio: vorbis, 22050 Hz, mono, fltp, 89 kb/s
Unsupported codec with id 0 for input stream 0

When you want to investigate the video file by yourself, you can download it at http://www38.zippyshare.com/d/BaItXEdB/2145/out.ogv

**Tags:** ffmpeg, codec, avconv


---

## 1 answers

### Answer by username_1 on 2015-03-17. Score: 2 | Accepted answer

What is Ogg Skeleton?
From Ogg Skeleton 4:

Ogg Skeleton provides structuring information for multitrack Ogg
  files. It is compatible with Ogg Theora and provides extra clues for
  synchronization and content negotiation such as language selection.
  The latest version of Skeleton, version 4.0, also provides keyframe
  indexes to enable optimal seeking over high-latency connections, such
  as the internet.

So basically the Ogg container can support multiple tracks of multiple track types types. However:

Ogg does not know anything about the content it carries and leaves it
  to the media mapping of each codec to declare and describe itself.
  There is no meta information available at the Ogg level about the
  content tracks encapsulated within an Ogg physical bitstream.

Ogg Skeleton attempts to deal with these issues by providing information about the other streams that allows parsing and (de)muxing without having to decode.
What is stored inside such a stream?

Ogg Skeleton is a logical bitstream within an Ogg stream that contains
  information about the other encapsulated logical bitstreams. For each
  logical bitstream it provides information such as its media type, and
  explains the way the granulepos field in Ogg pages is mapped to time.

See The "skeleton" meta information track for Ogg for more details.
Is it necessary to play the media file?
Continuing from the second quoted paragraph:

This is particularly a problem if you don't have all the decoder
  libraries available and just want to parse an Ogg file (such as with file)  to find out what type of data it encapsulates.


For playback you are decoding.
You're using (libogg/libvorbis/libtheora and) the FFmpeg cli tools (or should be; I don't recommend Libav) to demux and decode. You have the various decoder libraries available. You can download a recent build of ffmpeg.
Your file is not complicated. It just contains one video stream, one video stream, and one data stream (the Ogg Skeleton). It does not contain multiple streams of video, audio, subtitles, etc.
Ogg Skeleton 4.0 can index keyframes for seeking in high latency situations. Given the information you (did not) provide I'm going to assume this does not apply to you.

So the answer here is: Ogg Skeleton is not necessary to play this media file.
You can test this by remuxing the file while excluding the data stream with a negative mapping:
ffmpeg -i input.ogv -map 0 -map -0:d -c copy output.ogv

Now try playing it.


---

