August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Cookbook Example
How can I...?
Example 2: A Simple TCP Based Server that allows multiple connections at once, but sends a random ogg vorbis file to the client. Includes a simple TCP based client for this server, that connects to the server, decodes the ogg vorbis audio and plays it back. Components used:pipeline, SimpleServer, ReadFileAdaptor, TCPClient, VorbisDecode, AOAudioPlaybackAdaptor
#!/usr/bin/python
from Kamaelia.Util.PipelineComponent import pipeline
from Kamaelia.SimpleServerComponent import SimpleServer
from Kamaelia.Internet.TCPClient import TCPClient
from Kamaelia.vorbisDecodeComponent import VorbisDecode, AOAudioPlaybackAdaptor
import Kamaelia.ReadFileAdaptor
file_to_stream = "/usr/share/wesnoth/music/wesnoth-1.ogg"
clientServerTestPort=1500
def AdHocFileProtocolHandler(filename):
class klass(Kamaelia.ReadFileAdaptor.ReadFileAdaptor):
def __init__(self,*argv,**argd):
super(klass,self).__init__(filename, readmode="bitrate", bitrate=400000)
return klass
server=SimpleServer(protocol=AdHocFileProtocolHandler(file_to_stream),
port=clientServerTestPort).activate()
pipeline(
TCPClient("127.0.0.1",clientServerTestPort),
VorbisDecode(),
AOAudioPlaybackAdaptor()
).run()Source: Examples/example2/SimpleStreamingSystem.py