Deutsch

Воспоминание мультимедия 18.02.2025

9  
uscheswoi_82 патриотСегодня, 15:06
Сегодня, 15:06 

Всем привет! Хочу вспомнить про мультимедию. Будет от низкого уровня, до высокого уровня.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#1 
uscheswoi_82 патриотСегодня, 16:02
NEW Сегодня, 16:02 
в ответ uscheswoi_82 Сегодня, 15:06

Будем сначало вспоминать на Си. на Embarcadero Dev-C++:

main.c:

#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[]) {
  /* Проигрывает аудиофайл с именем файла a_ja_pam_pam.wav синхронно,
     т.е. будет программа "висеть" пока не проиграет аудиофайл 
     a_ja_pam_pam.wav
  */
  sndPlaySound("a_ja_pam_pam.wav", SND_FILENAME | SND_SYNC); 
  return 0;
}

Но компилятор ошибку даст. Нужно добавить библиотеку libwinmm.a в проект, т.е. так: ../../Program Files (x86)/Embarcadero/Dev-Cpp/TDM-GCC-64/x86_64-w64-mingw32/lib/libwinmm.a

Теперь компилируем, и слышно как программа проигрывает аудиофайл a_ja_pam_pam.wav. После того как аудиофайл проиграет, наша программа завершается.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#2 
uscheswoi_82 патриотСегодня, 16:10
NEW Сегодня, 16:10 
в ответ uscheswoi_82 Сегодня, 16:02

Если нужно чтобы проигралось ассинхронно, надо сделать вот так, вместо SND_SYNC заменим на SND_ASYNC:

main.c:

#include <stdio.h>
#include <windows.h>

int main(int argc, char *argv[]) {
  /* Проигрывает аудиофайл с именем файла a_ja_pam_pam.wav ассинхронно,
     т.е. будет программа "висеть" пока не проиграет аудиофайл 
     a_ja_pam_pam.wav
  */
  sndPlaySound("a_ja_pam_pam.wav", SND_FILENAME | SND_ASYNC);
  /* Специально нужна пауза, а то если выйдет из программы, звук перестанет проигрывать */
  system("pause");
  return 0;
}

Теперь запустив, слышим как проигрывается аудиофайл a_ja_pam_pam.wav, если нажать любую клавишу, то программа выйдет, и звук перестанет проигрываться.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#3 
uscheswoi_82 патриотСегодня, 16:55
NEW Сегодня, 16:55 
в ответ uscheswoi_82 Сегодня, 16:10

Параметр SND_ASYNC подходит если Windows приложение постоянно запущенное, самое то подходит для компьютерных игр каких-нибудь например.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#4