Пример #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($fp, 8192)) {
/* Делаем что-то с 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);
?>