Multimedia API

Тема в разделе "WASM.BEGINNERS", создана пользователем MrKreazy, 16 янв 2007.

  1. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Вообщем задали задачу, написать простейший плеер, критерии вес и "прожорливость". Однако, я ни разу не работал с мультимедиыными функциями винды. Подскажите какие функции надо юзать. Подкиньте пару примерчиков на си или асме, если есть такие
     
  2. Nata

    Nata New Member

    Публикаций:
    0
    Регистрация:
    23 фев 2006
    Сообщения:
    41
    http://wasm.ru/srclist.php?list=4
    http://board.flatassembler.net/topic.php?t=5528
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Плейер чего музыки или видео?
    Рекомендую заюзать DirectShow - размер будет сверхмалый, буквально пара функций и готово. К тому-же DirectShow - знает кучу форматов.
     
  4. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    Если простейший...
    http://www.wasm.ru/forum/viewtopic.php?pid=152151
     
  5. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Если юзать DirectShow будут использоваться кодеки установленные в системе? Я правильно понял? А можно примерчик с DirectShow?
     
  6. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    MrKreazy
    Не совсем кодеки, а DirectShow фильтры. С кодеками работать гемор. А с фильтрами на порядок проще.
    Все примеры дома, могу показать только завтра.
    Правда там С++, но это не важно.
    Есть пример как просто проигрывать, как проигрывать в своём окне и как грабить мультимедиа данные из фильтров. Кстати написан проигрыватель который грабит данные из фильтров и выводит средствами OpenGl, с софтварными эффектами: на кубе, с огнём и т.д.
     
  7. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    можно и на си, главное размер проги уложить максимум в 50-70кб. Хотя чем меньше, тем лучше.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    MrKreazy
    С DirectShow можно можно уложиться в пару кб. так как кода там почти ни какого -).
    К стати можешь глянуть в DirectX SDK, так как это там описано.
     
  9. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    СДК у меня нету! Искать его как-то неохота. Если не разберусь, естественно буду искать, а так неохота
     
  10. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вот мой EffectPlayer DirectShow на С++.
    Там в папке release работающий бинарник. Но пересобрать его без DirectX SDK и Мultimedia Format SDK нельзя. Так как для сборки нужна streams.lib, которая собирается из исходников, которые в DirectX SDK и есть зависимость от Мultimedia Format SDK. Но сам бинарник получается небольшой. Сам плейер 36кб, + Glut32.dll (~200кб), но это просто особенность данной проги зависимость от Glut, а так вполне реально сделать небольшой по размеру бинарника проигрыватель.

    в проигрователе файл открывается из контекстного меню правой кнопкой мыши, и после того как начнётся проигрывание, понажимай клавиши 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, +, q, w
    e - просмотр сначала.
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Вот ещё два более простых примера в одном архиве на С++.

    Тот что Simple должен и запускаться и пересобираться без проблем, но совсем попсовый пример.

    Второй проигрывание в своём окне с классом, для удобного использования DirectShow, в котором скрыта вся работа с DirecShow, и можно пользоваться только удобными методами этого класса. Но нужна сборка, и есно streams.lib, со всем что я указал в посте выше.
     
  13. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Booster, Y_Mur огромное спасибо
     
  14. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Теперь проблема с директиксом:
    Когда начинаешь, например играть видео, грузить много оперы(до 15метров). Решение-свернуть/развернуть плеер и... памяти уже занято всего 3метра. Можно ли как-то чистить память программно?
    А для звука соответственно нужно юзаты дайрект саунд?
     
  15. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    MrKreazy
    Угу, или старый WINMM, или модный OpenAL.
     
  16. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Ну так а потребление такого количества памяти-это нормально? Если нет, то как память подчистить можно?
     
  17. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Зачем её чистить? Разве эта память кому-то ещё нужна?
     
  18. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Нужна! Прочитай первый пост, там написано о минимальной прожорливости
     
  19. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    MrKreazy
    "Нужна!" - это не ответ. Если память кому-то действительно понадобится, DX распределит её более рационально, в ущерб производительности. Кстати, мультимедия и "минимальная прожорливость" - понятия несовместимые. На один канал звука обычно уходит от 8Мб в драйвере.
     
  20. fegdri

    fegdri New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2006
    Сообщения:
    22
    Кстати говоря, мне вот тож просто необходим какой-нибудь кроссплатформенный звуковой API. Поискал в инете. Нашел вот:
    http://www.portaudio.com/
    http://www.openal.org/
    http://ufmod.sourceforge.net/
    http://www.fmod.org/

    Насколько я понимаю, fmod и ufmod предназначены исключительно для проигрывания треккерной музыки, что мне не надо совсем, причем fmod не полностью free.
    Я в замешательстве. Есть PortAudio и есть OpenAL. Что лучше использовать? Мне необходимо, чтобы как минимум работало под винду, линукс и макос. Как минимум очень быстрый вывод звука. Как максимум аппаратное микширование, эффекты, 3d-звук (может быть). Кто с чем работал? Может есть еще какие-то известные API? Что работает быстрее?
    И последнее: как это все приспособить к асму (в моем случае fasm), ведь библиотеки то все на С++