Ejemplo #1 Leer un fichero OGG/Vorbis
<?php
dl("oggvorbis.so");
/* Por omisión, ogg:// decodificará a 16 bit sin signo Little Endian */
$fp = fopen('ogg://myaudio.ogg', 'r');
/* Recopilar información sobre el fichero. */
$metadatos = stream_get_meta_data($fp);
/* Inspeccionar la primera canción (normalmente una única canción,
pero los ficheros OGG/Vorbis pueden ser encadenados) */
$datos_canción = $metadatos['wrapper_data'][0];
echo "Fichero OGG/Vorbis codificado por: {$datos_canción['vendor']}\n.";
echo " {$datos_canción['channels']} canales de {$datos_canción['rate']}Hz muestreo codificado a {$datos_canción['bitrate_nominal']}bps.\n";
foreach($datos_canción['comments'] as $comentario) {
echo " $comentario\n";
}
while ($audio_data = fread($fp, 8192)) {
/* Hacer algo con el audio PCM que estamos extrayendo desde el OGG.
Copiarlo a /dev/dsp es un buen destino en sistemas linux,
recuerde configurar primero su dispositivo al modo de muestreo . */
}
fclose($fp);
?>
Ejemplo #2 Codificar un fichero de audio a OGG/Vorbis
<?php
dl('oggvorbis.so');
$contexto = stream_context_create(array('ogg'=>array(
'pcm_mode' => OGGVORBIS_PCM_S8, /* Audio de 8 bit con signo */
'rate' => 44100, /* Calida CD de 44kHz */
'bitrate' => 0.5, /* VBR calidad media*/
'channels' => 1, /* Mono */
'serialno' => 12345))); /* ünoco dentro de nuestro flujo */
/* Abrir un fichero para añadir información. Esto "encadenará" un segundo flujo OGG al final del primero. */
$ogg = fopen('ogg://mysong.ogg', 'a', false, $contexto);
$pcm = fopen('mysample.pcm', 'r');
/* Comprimir el audio PCM sin tratar de mysample.pcm a mysong.ogg */
stream_copy_to_stream($pcm, $ogg);
fclose($pcm);
fclose($ogg);
?>