Exemple #1
0
 /**
  * @param string $filename path to wav-file
  *
  * @return AudioFile
  * @throws FileIsNotExistsException
  * @throws FileIsNotReadableException
  * @throws FileIsNotWavFileException
  */
 public static function fromFile($filename)
 {
     if (!file_exists($filename)) {
         throw new FileIsNotExistsException('File "' . $filename . '" is not exists.');
     }
     if (!is_readable($filename)) {
         throw new FileIsNotReadableException('File "' . $filename . '" is not readable"');
     }
     if (is_dir($filename)) {
         throw new FileIsNotWavFileException('File "' . $filename . '" is not a wav-file');
     }
     $size = filesize($filename);
     if ($size < AudioFile::HEADER_LENGTH) {
         throw new FileIsNotWavFileException('File "' . $filename . '" is not a wav-file');
     }
     $handle = fopen($filename, 'rb');
     try {
         $header = Header::createFromArray(self::parseHeader($handle));
         $formatSection = FormatSection::createFromArray(self::parseFormatSection($handle));
         $dataSection = DataSection::createFromArray(self::parseDataSection($handle));
     } finally {
         fclose($handle);
     }
     return new AudioFile($header, $formatSection, $dataSection);
 }
Exemple #2
0
 /**
  * @return AudioFile
  */
 public function build()
 {
     $raw = '';
     foreach ($this->samples as $sample) {
         $raw .= $sample->getData();
     }
     $data = DataSection::createFromRaw($raw);
     $format = FormatSection::createFromParameters(['audioFormat' => $this->audioFormat, 'numberOfChannels' => $this->numberOfChannels, 'sampleRate' => $this->sampleRate, 'byteRate' => $this->byteRate, 'blockAlign' => $this->blockAlign, 'bitsPerSample' => $this->bitsPerSample]);
     $header = Header::createFromDataSection($data);
     return new AudioFile($header, $format, $data);
 }
Exemple #3
0
 /**
  * @return int
  */
 public function getBitsPerSample()
 {
     return $this->formatSection->getBitsPerSample();
 }