<div class="gmail_quote">[Woops, forgot to reply to the list ; just sent the following to Ralph]</div><div class="gmail_quote"><br>Thankyou guys.<div class="im"><div><br></div><div><span>&gt; All Speex files (.spx) are encoded in Ogg, so speexenc is all you need for that.</span><br>

<span>&gt; The standard &quot;flac&quot; utility will encode into Ogg with the --ogg switch.</span></div>
<div><font color="#222222" face="arial, sans-serif"><br></font></div></div><div><font color="#222222" face="arial, sans-serif">D&#39;oh! Have been RTFM&#39;ing an awful lot lately, but I completely missed that flac has an --ogg switch</font></div>

<div class="im">
<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">&gt; </font><span>You may also wish to support Opus</span></div><div><span><br></span></div>
</div><div><font color="#222222" face="arial, sans-serif">Great, thanks will take a look</font></div><div class="im"><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">&gt; </font><span>No one uses ogg pcm at all. I think there are some experimental </span><span>implementations, but I don&#39;t remember where they are. </span><span>I wouldn&#39;t </span><span>worry about that one.</span></div>


<div><font color="#222222" face="arial, sans-serif"><br></font></div></div><div><font color="#222222" face="arial, sans-serif">No, I suppose FLAC itself would render that option somewhat obsolete, and as you say people tend not to package flacs in oggs. Advice taken.</font></div>


<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif">Thankyou also for the example files and the opus links.</font></div><div class="im"><div><font color="#222222" face="arial, sans-serif"><br>


</font></div><div><font color="#222222" face="arial, sans-serif">&gt; </font><span>Neat. Have you looked at calculating the file length so you can set the </span><span>Content-Duration header when serving the files back?</span></div>


<div><font color="#222222" face="arial, sans-serif"><br></font></div></div><div><font color="#222222" face="arial, sans-serif">Yes, I already do. Stream meta is dumped in a database, non-compressed/lossless formats are transcoded to flac to be stored, and subsequent requests may be made for the file in an arbitrary format, depending on user settings. The content-duration header is always sent, indeed some browsers struggle without it. However, some clients </font><span style="color:rgb(34,34,34);font-family:arial,sans-serif">(particularly Chrome it seems)</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif"> will request byte-ranges when playing an ogg, and am slightly confused as to whether I should return a content-duration header whilst satisfying a </span><span style="color:rgb(34,34,34);font-family:arial,sans-serif">byte</span><span style="color:rgb(34,34,34);font-family:arial,sans-serif">-range request, or only during the first request. At the moment I send it every time, and no damage appears to be done.</span></div>


<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">Incidentally, whilst the documentation is excellent, there are one or 2 things I am slightly confused about, if you don&#39;t mind my going off-topic:</span></div>


<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">1) It seems I can always rely on the first byte of the first vorbis comment page to be 3. Is this right?</span></div>


<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">I see that some pages begin with a byte and then &quot;vorbis&quot;, but haven&#39;t yet found a resource that tells me what that byte means.</span></div>


<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></span></div><div><font color="#222222" face="arial, sans-serif">2) In fact, must page 2 of an ogg be a comment page, or may it be missing altogether? So far, I&#39;ve found &quot;empty&quot; pages with a single page segment, but never a missing comment page.</font></div>


<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">In case you&#39;re interested, the overall intention of this part of the program is thus: when inputting the file, it must read the stream meta, comments etc in order to dump them in a database. When outputting the file, the requested stream may include additional comment data which the user intends to be included with the file, so in e.g. an ogg stream request, the transcoded ogg file will have its (empty, if any) comment pages replaced with pages created by my program on the fly. This is in order that I may cache transcoded files and comments separately, since comments may change but a transcoded file will not (am aware of the stream_serial_number problem this gives me, btw). This means am currently getting to grips with the bones of ogg&#39;s page structure quite intimately, and getting hold of / creating some variations in the layout will help me unit-test the parsing side of things as well as open up possibilities on the streaming side, hence my original message.</span></div>

<div class="HOEnZb"><div class="h5">
<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" face="arial, sans-serif"><br></font></div><div><div><br><br><div class="gmail_quote">On 2 June 2012 16:10, Ralph Giles <span dir="ltr">&lt;<a href="mailto:giles@thaumas.net" target="_blank">giles@thaumas.net</a>&gt;</span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>On Sat Jun  2 07:19:14 2012, clancy hood wrote:<br>
<br>
&gt; a) a command-line utility that allows me to encode to non-vorbis ogg<br>
&gt; audio (*nix)<br>
<br>
</div>There&#39;s not really a single utility. You can make .spx files<br>
(speex-in-ogg) with speexenc, ogg flac files with &#39;flac --ogg&#39;, and<br>
.opus files (opus-in-ogg) with opusenc.<br>
<div><br>
&gt; b) example files of the above<br>
<br>
</div>You can get an example opus file (with metadata) at<br>
<a href="http://people.xiph.org/~giles/2012/opus/ehren-paper_lights-64.opus" target="_blank">http://people.xiph.org/~giles/2012/opus/ehren-paper_lights-64.opus</a><br>
<br>
You can find some speex file e.g. at<br>
<a href="http://people.xiph.org/~giles/2008/lca/mirror/Wed/" target="_blank">http://people.xiph.org/~giles/2008/lca/mirror/Wed/</a><br>
<br>
Ogg Flac isn&#39;t very popular; it&#39;s mostly useful for muxing with video. I<br>
don&#39;t have any examples handy.<br>
<br>
No one uses ogg pcm at all. I think there are some experimental<br>
implementations, but I don&#39;t remember where they are. I wouldn&#39;t<br>
worry about that one.<br>
<div><br>
&gt; Am building a program part of which reads stream meta from uploaded<br>
&gt; audio files, and so have written a lightweight getid3-like set of<br>
&gt; classes that do this. Am handling ogg vorbis perfectly well already<br>
&gt; and would like to test it against the others.<br>
<br>
</div>Neat. Have you looked at calculating the file length so you can set the<br>
Content-Duration header when serving the files back?<br>
<div><br>
&gt; Additionally (out of pure interest) does anyone know of good<br>
&gt; literature pertaining to examples of (ab)using libogg to package<br>
&gt; arbitrary audio formats?<br>
<br>
</div>We generally discourage this, since our mission is to provide<br>
royalty-free, libre multimedia technology. However, if you have a<br>
specific audio format in mind, this is a good place to talk about the<br>
best way to define an Ogg encapsulation method.<br>
<br>
HTH and thanks for supporting Ogg,<br>
 -r<br>
</blockquote></div><br></div></div>
</div></div></div><br>