<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Examples on using the ogg:// wrapper.</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="oggvorbis.examples.html">Examples</a></div> <div class="next" style="text-align: right; float: right;"><a href="book.openal.html">OpenAL</a></div> <div class="up"><a href="oggvorbis.examples.html">Examples</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="oggvorbis.examples-basisc" class="section"> <h2 class="title">Examples on using the ogg:// wrapper.</h2> <p class="para"> <div class="example" id="example-601"> <p><strong>Example #1 Reading an OGG/Vorbis file</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br />dl</span><span style="color: #007700">(</span><span style="color: #DD0000">"oggvorbis.so"</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* By default, ogg:// will decode to Signed 16-bit Little Endian */<br /></span><span style="color: #0000BB">$fp </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'ogg://myaudio.ogg'</span><span style="color: #007700">, </span><span style="color: #DD0000">'r'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Collect some information about the file. */<br /></span><span style="color: #0000BB">$metadata </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_get_meta_data</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Inspect the first song (usually the only song, <br /> but OGG/Vorbis files may be chained) */<br /></span><span style="color: #0000BB">$songdata </span><span style="color: #007700">= </span><span style="color: #0000BB">$metadata</span><span style="color: #007700">[</span><span style="color: #DD0000">'wrapper_data'</span><span style="color: #007700">][</span><span style="color: #0000BB">0</span><span style="color: #007700">];<br /><br />echo </span><span style="color: #DD0000">"OGG/Vorbis file encoded by: </span><span style="color: #007700">{</span><span style="color: #0000BB">$songdata</span><span style="color: #007700">[</span><span style="color: #DD0000">'vendor'</span><span style="color: #007700">]}</span><span style="color: #DD0000">\n."</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">" </span><span style="color: #007700">{</span><span style="color: #0000BB">$songdata</span><span style="color: #007700">[</span><span style="color: #DD0000">'channels'</span><span style="color: #007700">]}</span><span style="color: #DD0000"> channels of </span><span style="color: #007700">{</span><span style="color: #0000BB">$songdata</span><span style="color: #007700">[</span><span style="color: #DD0000">'rate'</span><span style="color: #007700">]}</span><span style="color: #DD0000">Hz sampling encoded at </span><span style="color: #007700">{</span><span style="color: #0000BB">$songdata</span><span style="color: #007700">[</span><span style="color: #DD0000">'bitrate_nominal'</span><span style="color: #007700">]}</span><span style="color: #DD0000">bps.\n"</span><span style="color: #007700">;<br />foreach(</span><span style="color: #0000BB">$songdata</span><span style="color: #007700">[</span><span style="color: #DD0000">'comments'</span><span style="color: #007700">] as </span><span style="color: #0000BB">$comment</span><span style="color: #007700">) {<br /> echo </span><span style="color: #DD0000">" </span><span style="color: #0000BB">$comment</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br /><br />while (</span><span style="color: #0000BB">$audio_data </span><span style="color: #007700">= </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">, </span><span style="color: #0000BB">8192</span><span style="color: #007700">)) {<br /> </span><span style="color: #FF8000">/* Do something with the PCM audio we're extracting from the OGG.<br /> Copying to /dev/dsp is a good target on linux systems, <br /> just remember to setup the device for your sampling mode first. */<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$fp</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> <p class="para"> <div class="example" id="example-602"> <p><strong>Example #2 Encode an audio file to OGG/Vorbis</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br />dl</span><span style="color: #007700">(</span><span style="color: #DD0000">'oggvorbis.so'</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$context </span><span style="color: #007700">= </span><span style="color: #0000BB">stream_context_create</span><span style="color: #007700">(array(</span><span style="color: #DD0000">'ogg'</span><span style="color: #007700">=>array(<br /> </span><span style="color: #DD0000">'pcm_mode' </span><span style="color: #007700">=> </span><span style="color: #0000BB">OGGVORBIS_PCM_S8</span><span style="color: #007700">, </span><span style="color: #FF8000">/* Signed 8bit audio */<br /> </span><span style="color: #DD0000">'rate' </span><span style="color: #007700">=> </span><span style="color: #0000BB">44100</span><span style="color: #007700">, </span><span style="color: #FF8000">/* 44kHz CD quality */<br /> </span><span style="color: #DD0000">'bitrate' </span><span style="color: #007700">=> </span><span style="color: #0000BB">0.5</span><span style="color: #007700">, </span><span style="color: #FF8000">/* Midquality VBR */<br /> </span><span style="color: #DD0000">'channels' </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #FF8000">/* Mono */<br /> </span><span style="color: #DD0000">'serialno' </span><span style="color: #007700">=> </span><span style="color: #0000BB">12345</span><span style="color: #007700">))); </span><span style="color: #FF8000">/* Unique within our stream */<br /><br />/* Open file for appending. This will "chain" a second OGG stream at the end of the first. */<br /></span><span style="color: #0000BB">$ogg </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'ogg://mysong.ogg'</span><span style="color: #007700">, </span><span style="color: #DD0000">'a'</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">, </span><span style="color: #0000BB">$context</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$pcm </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysample.pcm'</span><span style="color: #007700">, </span><span style="color: #DD0000">'r'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">/* Compress the raw PCM audio from mysample.pcm into mysong.ogg */<br /></span><span style="color: #0000BB">stream_copy_to_stream</span><span style="color: #007700">(</span><span style="color: #0000BB">$pcm</span><span style="color: #007700">, </span><span style="color: #0000BB">$ogg</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$pcm</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$ogg</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?></span> </span> </code></div> </div> </div> </p> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="oggvorbis.examples.html">Examples</a></div> <div class="next" style="text-align: right; float: right;"><a href="book.openal.html">OpenAL</a></div> <div class="up"><a href="oggvorbis.examples.html">Examples</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>