mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-27 14:28:56 +00:00

git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@297028 c90b9560-bf6c-de11-be94-00142212c4b1
98 lines
2.6 KiB
XML
98 lines
2.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
|
|
<chapter xml:id="oggvorbis.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
&reftitle.examples;
|
|
<section xml:id="oggvorbis.examples-basisc">
|
|
<title>Examples on using the ogg:// wrapper.</title>
|
|
<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>
|
|
</section>
|
|
</chapter>
|
|
|
|
<!-- 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:"~/.phpdoc/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
|
|
-->
|
|
|