За последние 24 часа нас посетили 17375 программистов и 1201 робот. Сейчас ищут 1520 программистов ...

Длинна трека из *.wav файла

Тема в разделе "PHP для новичков", создана пользователем Geqsogen, 12 ноя 2008.

  1. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    Подскажите каким образом из свойства файла *.wav (как это делает винда) с помощью php узнать длину трека?
     
  2. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    флоппик
    а можно как то направить в более нужное русло - не совсем понял как использовать OpenAL Audio Bindings
     
  3. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    теоритические рассуждения: ваще wav - "чистый" формат.. то-есть длинна одной секунды звука при одной частоте и битовой размерности, за минусом заголовка (в котором как раз можно прочитать частоты/биты) всегда одинакова.. погугли по: описание wav формата.. если голова есть, то думаю всё решается очень просто без использования сторонних либ
     
  4. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    QQQ
    и как же я прочитаю заголовок в бинарном файле?
    я думал считать из размера файла - но не факт что битрейт всегда один и тот же - файлов десятки тысяч... если кто уже привязывал библиотеки на эту тему - прошу поделитесь...
     
  5. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    так-же как и в любом другом :)
    один символ - один байт
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    эх, где ж мои 19 лет? :)
    PHP:
    1. <?php
    2. $file = 'sound.wav';
    3. $fp = fopen($file, 'rb');
    4. fseek($fp, 28);
    5. $rawheader = fread($fp, 4);
    6. $header = unpack('Vbytespersec',$rawheader);
    7. echo 'Файл '.$file.' продолжительностью '.round((filesize($file)-44)/$header['bytespersec'],2).' сек.';
    8. ?>
    9.  
    10.  
     
  7. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    А как же число каналов?
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а что число каналов?
    BytesPerSec == SampleRate * NumChannels * BitsPerSample/8
     
  9. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Ага. Туплю.
     
  10. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    Luge
    Ошибка в размере в 573 раза от ориг размера :(
     
  11. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кинь на мыло файлик?
     
  12. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    Luge
    лови - все файлы мелкие - из за секретов фирмы не могу кинуть тебе многа
     
  13. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  14. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Sergey89
    не получится. У него
    *.wav, ага, конечно. и mp3 ещё.

    Geqsogen
    учите матчасть.
     
  15. Geqsogen

    Geqsogen Активный пользователь

    С нами с:
    7 ноя 2008
    Сообщения:
    11
    Симпатии:
    0
    Luge
    то-то я думаю что за MPEG Layer 3 в свойствах пишет - но эту х.. пропустил мимо глаз и ушей - ну чтож, спасиб всем, пришлось считать от размера файла и надеяться что битрейт не смениться (и никто не говорил что я ас в программировании - дурак дураком)