mirror of
https://github.com/SFML/SFML.git
synced 2024-12-11 12:39:15 +08:00
12af32c083
git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/trunk@1064 4e206d99-4929-0410-ac5d-dfc041789085
50 lines
1.3 KiB
Python
Executable File
50 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
from PySFML import sf
|
|
|
|
class MyCustomStream(sf.SoundStream):
|
|
|
|
def Open(self, Filename):
|
|
# Load the sound data into a sound buffer
|
|
self.SoundData = sf.SoundBuffer()
|
|
if not self.SoundData.LoadFromFile(Filename):
|
|
return False
|
|
# Initialize the stream with the sound parameters
|
|
self.Initialize(self.SoundData.GetChannelsCount(), self.SoundData.GetSampleRate())
|
|
# Copy the audio samples into our internal array
|
|
self.myBuffer = self.SoundData.GetSamples()
|
|
return True
|
|
|
|
def OnStart(self):
|
|
self.myOffset = 0
|
|
self.myBufferSize = 80000
|
|
return True
|
|
|
|
def OnGetData(self):
|
|
# Check if there is enough data to stream
|
|
if self.myOffset > len(self.myBuffer):
|
|
# Returning something else than a string means that we want to stop playing the stream
|
|
return ""
|
|
# Data contains the string of samples we will return
|
|
if self.myOffset + self.myBufferSize >= len(self.myBuffer):
|
|
print("End of audio data reached")
|
|
Data = self.myBuffer[self.myOffset:]
|
|
else:
|
|
Data = self.myBuffer[self.myOffset:self.myOffset+self.myBufferSize]
|
|
# Update the offset
|
|
self.myOffset = self.myBufferSize + self.myOffset
|
|
return Data
|
|
|
|
def Main():
|
|
Stream = MyCustomStream()
|
|
Stream.Open("./data/fart.wav")
|
|
Stream.Play()
|
|
print("Playing 5 seconds of audio data...")
|
|
sf.Sleep(5)
|
|
Stream.Stop()
|
|
print("Press enter to exit...")
|
|
input()
|
|
|
|
Main()
|
|
|