nagrywanie

Nagrywanie dźwięku

Nagrywanie dźwięku do bufora


W większości przypadków do zapisywanie przechwytywanych dźwięków używa się klasy sf::SoundBuffer, która pozwala na odtwarzanie i zapisywanie dźwięków.

Jednak do samego nagrywania używa się sf::SoundBufferRecorder.

SoundBufferRecorder::isAvailable sprawdza czy nagrywanie jest możliwe na tym systemie, jeżeli zwróci false możesz sobie darować nagrywanie i nic na to nie poradzimy.

Nagrywanie odbywa się w oddzielnym wątku więc nie musisz kombinować aby nagrać cokolwiek, po prostu używasz play i zaczyna się nagrywanie niezależnie od tego co robi twoja gra.

Co możesz zrobić z nagranymi danymi?

– zapisać do pliku

– odtworzyć

– uzyskać dostęp do surowych danych, przekształcić je i cokolwiek chciałbyś z nimi zrobić

 

Nagrywanie niestandardowe


Jeżeli przechowywanie i zapisywanie przechwyconych dźwięków to dla ciebie za mało, to możesz utworzyć swoją własną nagrywarkę. W ten sposób będziesz mógł np streamować przechwycona audio do sieci itp.

Aby tego dokonać musisz utworzyć klasę, która dziedziczy po SoundRecorder. Posiada ona w sobie klasę wirtualną onProcessSamples podczas gdy każdy chunk został przechwycony, więc to jest miejsce gdzie musisz zaimplementować własne elementy.

Są także dwie opcjonalne metody do nadpisania: onStart onStop które są wywoływane podczas rozpoczęcia/zatrzymania nagrywania.

Poniżej masz przykładowy szkielet takiej klasy:

Funkcje isAvailable/start/stop zostały zdefiniowane w sf::SoundRecorder i są dziedziczone w każdej klasie potomnej tej klasy, co oznacza że ich użycie wygląda tak samo jak w klasie sf::SoundBufferRecorder.

Oryginalny artykuł