pythonで音声を再生するのこと その4
おまけ。
pysdl2のsdl2.sdlmixer.Mix_LoadMUSを使った場合、
一度に鳴らせる音声はひとつだけ。
つまり、BGMを背景にセリフを再生する、といった事は、
この関数ではできない。
そんな場合は、チャネル再生を使う。
チャネル再生には、チャンクとチャネルを取得すればよく、
関数も用意されている。
パッケージ | 関数 | 備考 |
sdl2.sdlmixer | Mix_LoadWAV | 音声を読み込み、チャンクを取得する。 WAVE, AIFF, RIFF, OGG, VOCが利用可能。 |
sdl2.sdlmixer | Mix_PlayChannel | チャネルを取得して再生を行う。 |
sdl2.sdlmixer | Mix_Pause | 再生の停止 |
sdl2.sdlmixer | Mix_FreeChunk | チャンクの開放 |
以下にソース。
# -*- coding: utf-8 -*- from ctypes import * from sdl2 import * from sdl2.sdlmixer import * from time import sleep if __name__ == u"__main__": SDL_Init(SDL_INIT_AUDIO) Mix_Init(MIX_INIT_OGG) Mix_OpenAudio(22050, AUDIO_S16, 2, 4096) path = c_char_p(b"OGGファイルのパス") chunk = Mix_LoadWAV(path) Mix_VolumeMusic(64) channel = Mix_PlayChannel(-1, chunk, 1) sleep(100) Mix_Pause(channel) Mix_FreeChunk(chunk) SDL_Quit()
前回のソースと今回のソースを組み合わせれば、
複数の音声を同時に再生できるようになる。
チャネル再生にはMP3が使えないっと言うのが玉にキズだけど。。。