From 6fbfc0f0cdd9c4a8c10da11979258aa8cbf6b888 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 17 Oct 2012 02:50:06 +0200 Subject: multi input source works now with all sample configurations --- src/audio.json | 19 ++++++++++++------- src/flufigut.py | 10 +++++----- src/test.json | 41 ++++++++++++++++++++++++++--------------- 3 files changed, 43 insertions(+), 27 deletions(-) diff --git a/src/audio.json b/src/audio.json index 133e776..d8bc0d9 100644 --- a/src/audio.json +++ b/src/audio.json @@ -20,14 +20,14 @@ "low": { "audio": 96 } }, "machines": { - "calypso": [ "input", "encoder-vorbis-160", "encoder-vorbis-128", "encoder-vorbis-96", - "muxer-ogg-high", "muxer-ogg-medium", "muxer-ogg-low", "streamer-local1" ] + "calypso": [ "input-alsa", "encoder-alsa-vorbis-160", "encoder-alsa-vorbis-128", "encoder-alsa-vorbis-96", + "muxer-audio-ogg-high", "muxer-audio-ogg-medium", "muxer-audio-ogg-low", "streamer-local1" ] } }, "input": { "alsa": { - "type": "ao", - "source": "soundcard", + "type": "soundcard", + "master": true, "properties": { "samplerate": 48000, "depth": 16, @@ -35,12 +35,17 @@ } } }, - "transcode": { - "ogg": [ "high", "medium", "low" ] + "mux": { + "audio": { + "audio": "alsa", + "formats": { + "ogg": [ "high", "medium", "low" ] + } + } }, "stream": { "streamer-local": { - "formats": [ "ogg" ], + "muxes": [ "audio" ], "type": "http", "count": 1, "port": 8000, "max-con": 5, "burst-on-connect": 5, "hostname": "audio" diff --git a/src/flufigut.py b/src/flufigut.py index cfffeaa..88e49c4 100755 --- a/src/flufigut.py +++ b/src/flufigut.py @@ -124,7 +124,7 @@ for mux_name in mux.keys(): flow['input']['resample-%s-%s' % (source, samplerate)] = { 'type': 'audio-resample', 'desc': "resample audio from %s to %s Hz" % (source, samplerate), - 'worker': 'resample', + 'worker': worker_name, 'feeder': feeder, 'properties': { 'samplerate': samplerate, @@ -151,7 +151,7 @@ for mux_name in mux.keys(): flow['input']['resize-%s-%s' % (source, resolution)] = { 'type': 'video-resize', 'desc': "resize video from %s to %sx%s" % (source, globals['resolutions'][resolution]['width'], globals['resolutions'][resolution]['height']), - 'worker': 'resize', + 'worker': worker_name, 'feeder': feeder, 'properties': { 'width': globals['resolutions'][resolution]['width'], @@ -182,7 +182,7 @@ for mux_name in mux.keys(): if samplerate != input_samplerate: feeder = 'resample-%s-%s' % (source, samplerate) else: - feeder = mux[mux_name]['audio'] + feeder = 'input-%s' % (mux[mux_name]['audio']) audio_encoder = 'encode-%s-%s-%i-%i' % (source, encoder, bitrate, samplerate) if audio_encoder not in flow['encoder_audio']: worker_name = 'encoder-%s-%s-%s' % (source, encoder, bitrate) @@ -210,7 +210,7 @@ for mux_name in mux.keys(): if resolution != input_resolution: feeder = 'resize-%s-%s' % (source, resolution) else: - feeder = mux[mux_name]['video'] + feeder = 'input-%s' % (mux[mux_name]['video']) video_encoder = 'encode-%s-%s-%s' % (source, encoder, resolution) if video_encoder not in flow['encoder_video'].keys(): worker_name = 'encoder-%s-%s-%s' % (source, encoder, resolution) @@ -301,7 +301,7 @@ for cluster in stream.keys(): hostname = "%s.%s" % (stream[cluster]['hostname'], globals['domain']) flow['streamer'][name] = { 'type': "%s-stream" % stream[cluster]['type'], - 'desc': "%s streamer for %s-%s (part %i of %s cluster)" % (stream[cluster]['type'], format, profile, idx+1, cluster), + 'desc': "%s streamer for %s %s-%s (part %i of %s cluster)" % (stream[cluster]['type'], mux_name, format, profile, idx+1, cluster), 'worker': stream_worker, 'feeder': feeder, 'rrd_clients' : "%s/%s_clients.rrd" % (globals['rrd-dir'], name), diff --git a/src/test.json b/src/test.json index 58e3aac..22f98d4 100644 --- a/src/test.json +++ b/src/test.json @@ -31,21 +31,21 @@ "vp8": { "720p25": 2048, "480p25": 1024, "360p25": 600 } }, "machines": { - "titan": [ "input", "resample", "resize", "encoder-vorbis-160", "encoder-vorbis-128", - "encoder-vorbis-96", "encoder-aac-160", "encoder-aac-128", "encoder-aac-96", - "muxer-flash-high", "muxer-flash-medium", "muxer-flash-low", "muxer-webm-high", - "muxer-webm-medium", "muxer-webm-low", "muxer-ogg-high", "streamer-local1" ], - "calypso": [ "encoder-h264-720p25", "encoder-h264-480p25", "encoder-h264-360p25" ], - "telesto": [ "encoder-vp8-720p25", "encoder-vp8-480p25", "encoder-vp8-360p25" ], + "titan": [ "input-sdi", "resample-sdi", "resize-sdi", "encoder-sdi-vorbis-160", "encoder-sdi-vorbis-128", + "encoder-sdi-vorbis-96", "encoder-sdi-aac-160", "encoder-sdi-aac-128", "encoder-sdi-aac-96", + "muxer-av-flash-high", "muxer-av-flash-medium", "muxer-av-flash-low", "muxer-av-webm-high", + "muxer-av-webm-medium", "muxer-av-webm-low", "muxer-audio-ogg-high", "streamer-local1" ], + "calypso": [ "encoder-sdi-h264-720p25", "encoder-sdi-h264-480p25", "encoder-sdi-h264-360p25" ], + "telesto": [ "encoder-sdi-vp8-720p25", "encoder-sdi-vp8-480p25", "encoder-sdi-vp8-360p25" ], "elevate1": [ "streamer-pub1" ], "elevate2": [ "streamer-pub2" ], "elevate3": [ "streamer-pub3" ] } }, "input": { - "sdi-av": { - "type": "av", - "source": "decklink", + "sdi": { + "type": "decklink", + "master": true, "properties": { "resolution": "720p25", "samplerate": 48000, @@ -56,20 +56,31 @@ } } }, - "transcode": { - "flash": [ "high", "medium", "low" ], - "webm": [ "high", "medium", "low" ], - "ogg": [ "high" ] + "mux": { + "av": { + "video": "sdi:video", + "audio": "sdi:audio", + "formats": { + "flash": [ "high", "medium", "low" ], + "webm": [ "high", "medium", "low" ] + } + }, + "audio": { + "audio": "sdi:audio", + "formats": { + "ogg": [ "high" ] + } + } }, "stream": { "streamer-local": { - "formats": [ "flash", "webm", "ogg" ], + "muxes": [ "av", "audio" ], "type": "http", "count": 1, "port": 8000, "max-con": 5, "burst-on-connect": 5, "hostname": "elevate-feed" }, "streamer-pub": { - "formats": [ "flash", "webm" ], + "muxes": [ "av" ], "type": "http", "count": 3, "port": 8000, "max-bw": 290000, "burst-on-connect": 5, "hostname": "elevate-live%i" -- cgit v1.2.3