1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.6 $ -->
<!-- Purpose: utilspec.audio -->
<!-- Membership: pecl, external -->
<reference id="ref.oggvorbis">
<title>oggvorbis</title>
<titleabbrev>OGG/Vorbis</titleabbrev>
<partintro>
<section id="oggvorbis.intro">
&reftitle.intro;
<simpara>
The OGG/Vorbis file format, as defined by <ulink
url="&url.ogg.vorbis;">&url.ogg.vorbis;</ulink>, is a scheme
for compressing audio streams by multiple factors with a minimum of
quality loss. This extension adds Ogg Vorbis support to PHP's
<link linkend="wrappers">URL Wrappers</link>. When used in read mode,
compressed OGG/Vorbis data is expanded to raw PCM audio in one of six PCM
encoding formats listed below.
</simpara>
</section>
<section id="oggvorbis.requirements">
&reftitle.required;
<para>
This extension requires <literal>PHP >= 4.3.0</literal>,
<ulink url="&url.ogg.vorbis.downloads;">libogg</ulink> >= 1.0, and
<ulink url="&url.ogg.vorbis.downloads;">libvorbis</ulink> >= 1.0.
</para>
</section>
<section id="oggvorbis.configuration">
&reftitle.runtime;
&no.config;
</section>
&reference.oggvorbis.configure;
&reference.oggvorbis.contexts;
&reference.oggvorbis.constants;
</partintro>
<refentry id="oggvorbis.usage">
<refnamediv>
<refname>Usage</refname>
<refpurpose>
Examples on using the ogg:// wrapper.
</refpurpose>
</refnamediv>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Reading an OGG/Vorbis file</title>
<programlisting role="php">
<![CDATA[
<?php
dl("oggvorbis.so");
/* By default, ogg:// will decode to Signed 16-bit Little Endian */
$fp = fopen('ogg://myaudio.ogg', 'r');
/* Collect some information about the file. */
$metadata = stream_get_meta_data($fp);
/* Inspect the first song (usually the only song,
but OGG/Vorbis files may be chained) */
$songdata = $metadata['wrapper_data'][0];
echo "OGG/Vorbis file encoded by: {$songdata['vendor']}\n.";
echo " {$songdata['channels']} channels of {$songdata['rate']}Hz sampling encoded at {$songdata['bitrate_nominal']}bps.\n";
foreach($songdata['comments'] as $comment) {
echo " $comment\n";
}
while ($audio_data = fread($fp, 8192)) {
/* Do something with the PCM audio we're extracting from the OGG.
Copying to /dev/dsp is a good target on linux systems,
just remember to setup the device for your sampling mode first. */
}
fclose($fp);
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Encode an audio file to OGG/Vorbis</title>
<programlisting role="php">
<![CDATA[
<?php
dl('oggvorbis.so');
$context = stream_context_create(array('ogg'=>array(
'pcm_mode' => OGGVORBIS_PCM_S8, /* Signed 8bit audio */
'rate' => 44100, /* 44kHz CD quality */
'bitrate' => 0.5, /* Midquality VBR */
'channels' => 1, /* Mono */
'serialno' => 12345))); /* Unique within our stream */
/* Open file for appending. This will "chain" a second OGG stream at the end of the first. */
$ogg = fopen('ogg://mysong.ogg', 'a', false, $context);
$pcm = fopen('mysample.pcm', 'r');
/* Compress the raw PCM audio from mysample.pcm into mysong.ogg */
stream_copy_to_stream($pcm, $ogg);
fclose($pcm);
fclose($ogg);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
|