diff --git a/revid/revid.go b/revid/revid.go index aca95d36..6944b723 100644 --- a/revid/revid.go +++ b/revid/revid.go @@ -371,23 +371,25 @@ func (r *Revid) Update(vars map[string]string) error { for key, value := range vars { switch key { case "Output": - r.config.Outputs = make([]uint8, 1) - // FIXME(kortschak): There can be only one! - // How do we specify outputs after the first? - // - // Maybe we shouldn't be doing this! - switch value { - case "File": - r.config.Outputs[0] = File - case "Http": - r.config.Outputs[0] = Http - case "Rtmp": - r.config.Outputs[0] = Rtmp - case "FfmpegRtmp": - r.config.Outputs[0] = FfmpegRtmp - default: - r.config.Logger.Log(logger.Warning, pkg+"invalid Output1 param", "value", value) - continue + outputs := strings.Split(value, ",") + r.config.Outputs = make([]uint8, len(outputs)) + + for i, output := range outputs { + switch output { + case "File": + r.config.Outputs[i] = File + case "Http": + r.config.Outputs[i] = Http + case "Rtmp": + r.config.Outputs[i] = Rtmp + case "FfmpegRtmp": + r.config.Outputs[i] = FfmpegRtmp + case "Rtp": + r.config.Outputs[i] = Rtp + default: + r.config.Logger.Log(logger.Warning, pkg+"invalid output param", "value", value) + continue + } } case "Packetization": @@ -409,6 +411,8 @@ func (r *Revid) Update(vars map[string]string) error { r.config.FramesPerClip = uint(f) case "RtmpUrl": r.config.RtmpUrl = value + case "RtpAddr": + r.config.RtpAddress = value case "Bitrate": v, err := strconv.ParseUint(value, 10, 0) if err != nil {