Записки о Flash

WAV Player

Написал Flash плеер, воспроизводящий обычные PCM wav-файлы и строящий график амплитуд.

Смотреть. (600 КБ)

Позднее причешу код и выложу исходники.

UPD: Исходники.


31 comments

31 Comments so far

  1. root May 14th, 2007 14:30

    ух ты! браво!
    сразу куча идей по тому как это можно использовать.
    очень интересно будет взглянуть на код.

  2. __etc May 14th, 2007 14:38

    Спасибо :)
    Идея не моя, сразу говорю. Андрэ Мишель давно это использует для генерации звука. Однако почему-то никто не написал обычный WAV-плеер.
    Приведу код в порядок, выложу.

  3. nouba May 14th, 2007 18:51

    SoundForge ported to flash :)
    real cool!

  4. Паша May 14th, 2007 21:43

    класно ждем кода )

  5. [...] Немного изменил структуру классов, спрятал класс SWFFormat, поправил WaveGraph. Кто не знает, о чем речь. [...]

  6. INK• June 7th, 2007 02:37

    интересно, но очень сильно безполезно.
    сегодня начал рисерчить эту же тему но с загрузкой Nellymoser compressed файлов.
    идея такова.
    берем Nellymoser compressed файл. какуем с него СВФ закидываем в лоадер. проигрываем его. компутим спектр и снимаем синусоиду (вот только как бы это делать аккуратно). пакуем в ADPCM и отсылаем с места проишествия в неизвестном направлении. Зачем? ну например конвертр Nellymoser в читаемые форматы можно сделать.
    Второй этап – написания диктофона со всем чем положено.

  7. __etc June 7th, 2007 05:28

    > интересно, но очень сильно безполезно.
    Ну кому как :)
    Вот только синусоиду с computeSpectrum снимать как-то не с руки…

  8. INK• June 7th, 2007 18:20

    а разве есть другие варианты?

  9. __etc June 7th, 2007 18:38

    Есть — написать декодер Nellymoser :) )
    computeSpectrum для конвертации придется проиграть полностью ролик, что само по себе уже ужос.

  10. INK• June 7th, 2007 19:26

    ХАХАХА!кстати тому кто напишет $6000 выдадут.
    Tendering process
    struktur will pay 6000 US$ for this project. This is not a “lowest bidder” tender,
    Proposals will be judged on quality and risk analysis. Please send your
    proposal to tenders@struktur.de and we will contact you with questions.

    мало того что формат закрытый… еще это почти невозможный реверсинжениренг…

    ролик проиграть не проблема.
    как снять значения аккуратно? есть идеи?

  11. __etc June 7th, 2007 19:57

    Там вроде 2048 семплов за такт. Есть мысль учитывать позицию с точности то миллисекунды и снимать значения. Время проигрывания 2048 семплов можно считать константой. Если убегает или отстает — смещать на нужную позицию и опять воспроизводить. Только вот меня смущает то, что computeSpectrum все же ловит звук где-то на выходе, т.е. после play() не факт, что выловит нужную позицию.

  12. INK• June 7th, 2007 20:40

    а убегает и отстает как узнать?

  13. __etc June 7th, 2007 22:51

    Ну у нас же количество семплов в заданнный промежуток должно быть одинаково (по таймеру, getTimer в смысле, можно смотреть). Если у нас недостача, возвращаемся на N миллисекунд назад, если перебор, то удаляем лишние байты… Как-то так. Эксперименты ставить сейчас проблематично.

  14. INK• June 7th, 2007 23:47

    а есть желание? хотя чёт мне верится струдом что это можно толком сделать. к тому же getTimer из АС3 выбросили. а Таймер – неточно работает. Задача из разряда шаманства.

    Вот если бы это получилось…. непаханая целина открывается.
    БТВ. там в околоwavских тема проскакивал пример синхронизации с использованием ВАВ файла…

  15. __etc June 8th, 2007 00:37

    Желание? Не знаю, у меня сейчас задача посложнее есть.
    getTimer жив, никуда он не убран, лежит в utils. А шаманство это все изначально, ещё с момента генерации SWF с вавником…

  16. [...] и было обещано, исходники WAV Player-а. Старался сделать WAVSound наименее [...]

  17. tester October 6th, 2007 09:42

    sorry,I just can write English.
    Can wave_player access another domain .wav files?

  18. __etc October 6th, 2007 09:53

    No, it cannot. If remote domain doesn’t have crossdomain.xml with granted access for my domain or all domains, the file will not loaded for security reasons. You will get an error message if SecurityError is not handled in code (in Wave Player Demo (not in WaveSound class) i miss this, but it is not very important :) .

    Sorry for my Runglish =)

  19. tester October 6th, 2007 12:32

    Thanks!
    I am come from Taiwan!
    Excuse me for my bad English!

    Flashplayer can’t play .wav files but it can access .mp3 files over another domain even without crossdomain.xml?

    Why?

    Anyway,thanks for your help!

  20. __etc October 6th, 2007 19:12

    mp3? It’s impossible. mp3 or wav, no any difference.

  21. Jules April 13th, 2008 13:52

    Hi, I was looking for a library to externally load .wav files and found your WavPlayer. I tried to implement it and it works fine with the one “sound.wav” file that came along with your source. But it does not work with my own .wav files. They are in 44.1kH and 16Bit. Do you have an idea why?!!!
    Thanks a lot!

  22. etc April 13th, 2008 19:39

    Can you send me an example?

  23. Jules April 13th, 2008 23:40

    Here is a link, where you can download a .wav file, that I wanted to include. Look in the upper right corner. There you have to fill in the enter code in order to download it. I put it there, because I did not know how to send it elsewhise to you.

    http://www2.bigupload.com/download_frame.php?id_file=64095JZHMH

    If you have any idea, why it does not work, I would be very gratefull!!! Maybe it is just a little change in your script. Hopefuly :)

    Thank you very much for your time!!!

    Regards

  24. Jules April 14th, 2008 10:46

    I think I have found the problem. Your header looks different from mine. It seems, that some programs write other informations like author or date in the header file. This causes the header to be longer than yours. If I take out the information in a texteditor and make my header look like yours it works fine. Now, we have to find a way to change your script, that it is not depending on exactly the same looking headers. In your PCMFormat class, you define the header size uint:44;. This is right for your .wav file, but not for every other .wav file. I will try t o fix this bug and will let you know, when I will be successfull. But maybe you know better how to fix it.
    If you want to contact me directly, here is my email: jdaop@web.de
    Might be easier than writing on your blog:)

  25. etc April 14th, 2008 11:02

    Ok, i’ll write you.

  26. tobym June 11th, 2008 19:29

    Hi,

    I have been experimenting with your flash player project and it works well. I notice in the code it says

    * This class supports 44100, 22050, 11025, 5512.5 sample rates, 8 or 16 bit, 1 or 2 channels (mono/stereo) RIFF (not RIFX) PCM wav-files without any compression.

    I have made a small modifaction to the case statement to allow it to load 8000hz wav files which works but the files play too slowly, could you assist with some guidance on what would need to be modified to make these files play correctly?

    thanks
    Toby

  27. [...] mp3… Единственный, найденный живым в природе флеш плеер для wav грузит весь файл целиком в память, поддерживает [...]

  28. Кристофер February 17th, 2010 17:01

    Я понимаю, что сжатые wav файлы не будут играть с wavPlayer, но я надеялся, что Вы могли осмотреть образец типа wav файлов, с которыми я должен работать и говорить мне, если есть что – нибудь, что могло бы быть написано в .as подлинники, чтобы сделать эту работу типа файла. Файл может быть найден в http://www.mediafire.com/?dbmtmijhoem
    (sound_cmac.wav)

  29. etc February 21st, 2010 08:57
  30. Sasha April 14th, 2010 17:11

    Добрый день.

    У меня вопрос. А возможно ли построить подобный график для флв, не используя computeSpectrum?

    Проигрывать файл лишь для того, чтобы построить график как-то не хочется.

  31. etc April 14th, 2010 20:52

    Боюсь, что нет, т. к. у вас не будет доступа к звуковой информации из flv. Ну если только у вас не будет парсера этих самых flv.

Leave a reply