Примеры использования обертки ogg://.

Пример #1 Чтение файла OGG/Vorbis

<?php
dl
("oggvorbis.so");

/* По умолчанию, ogg:// будет декодировать в знаковый 16-битный Little Endian формат */
$fp fopen('ogg://myaudio.ogg''r');

/* Сбор информации о файле. */
$metadata stream_get_meta_data($fp);

/* проверка первой песни (обычно единственной, но файл OGG/Vorbis может быть связанным) */
$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($fp8192)) {
  
/* Делаем что-то с PCM-аудио, которое достали из OGG.
     Копирование в /dev/dsp - хороший выбор на системах linux, 
     только убедитесь, что ваше устройство соответствующим образом настроено. */
}

fclose($fp);

?>

Пример #2 Кодирование аудио-файла в OGG/Vorbis

<?php
dl
('oggvorbis.so');

$context stream_context_create(array('ogg'=>array(
             
'pcm_mode' => OGGVORBIS_PCM_S8,  /* Знаковое 8-битное аудио */
             
'rate' => 44100,                 /* Качество 44kHz CD */
             
'bitrate' => 0.5,                /* Среднее качество VBR */
             
'channels' => 1,                 /* Моно */
             
'serialno' => 12345)));          /* Уникальный номер внутри файла */

/* Открываем файл для добавления.  Мы "привяжем" второй поток OGG в конец файла. */
$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);
?>