diff --git a/db_schema.sql b/db_schema.sql
index 0feb9cacead2660fc581001bac80a73d57434886..9f5895d11377eba4fd444420e5527de7235e6102 100644
--- a/db_schema.sql
+++ b/db_schema.sql
@@ -107,7 +107,8 @@ CREATE TABLE IF NOT EXISTS `lectures_data` (
   `titlefile` varchar(255) NOT NULL DEFAULT '',
   `live` INTEGER NOT NULL DEFAULT 0,
   `norecording` INTEGER NOT NULL DEFAULT 0,
-	`profile` varchar(64)
+	`profile` varchar(64),
+  `stream_settings` text NOT NULL DEFAULT ''
 );
 CREATE TABLE IF NOT EXISTS `places` (
   `place` varchar(20) NOT NULL PRIMARY KEY,
diff --git a/edit.py b/edit.py
index 6cee1ed6d4ff96bf65388abec8adac9a3ae43110..a76f9f25087ea7827c10d2ab0c357c89e11a941e 100644
--- a/edit.py
+++ b/edit.py
@@ -45,7 +45,9 @@ editable_tables = {
 			'jumplist':	{'type': ''},
 			'deleted':	{'type': 'boolean'},
 			'live':		{'type': 'boolean', 'description': 'Ist ein Livestream geplant? Muss gesetzt sein damit der RTMP Stream zugeordnet wird.'},
-			'norecording': {'type': 'boolean', 'description:': 'Führt dazu, dass der Termin ausgegraut wird.'}},
+			'norecording': {'type': 'boolean', 'description:': 'Führt dazu, dass der Termin ausgegraut wird.'},
+			'stream_settings':	{'type': 'text'}
+			},
 		'creationtime_fields': ['course_id', 'time_created', 'time_updated'] },
 	'videos': {
 		'table': 'videos_data',
diff --git a/templates/course.html b/templates/course.html
index 7a61330ca8f79d3eb67a9a5262df2c979b156eea..c95340e31089a07f58df399f9179b2c8d5ff8c2d 100644
--- a/templates/course.html
+++ b/templates/course.html
@@ -223,10 +223,9 @@ function editstream_dump() {
 	$("#editstream select[name!='']").each(function () {
 		res[$(this).attr('name')] = $(this).val();
 	});
-	return JSON.stringify(res);
+	return res;
 };
-function editstream_load(data) {
-	var obj = JSON.parse(data);
+function editstream_load(obj) {
 	$("#editstream input:checkbox[name!='']").each(function () {
 		if ($(this).attr('name') in obj)
 			$(this).prop('checked', obj[$(this).attr('name')]);
@@ -238,13 +237,18 @@ function editstream_load(data) {
 };
 $('#editstream .source-select').on('change', editstream_update);
 $('#editstream-submit').on('click', function () {
-	var tmp = editstream_dump();
-	console.log(tmp);
+	moderator.api.set($('#editstream').data('currentpath'), JSON.stringify(editstream_dump()), true);
+	$('#editstream').modal('hide');
+});
+$('#editstream').on('show.bs.modal', function (event) {
+	var button = $(event.relatedTarget);
+	$('#editstream').data('currentpath', button.data('path'));
 	$("#editstream-form")[0].reset();
-	console.log(editstream_dump());
-	editstream_load(tmp);
-	console.log(editstream_dump());
+	if (button.data('value'))
+		editstream_load(button.data('value'));
+	editstream_update();
 });
+
 $('#responsible-select').multiselect({enableCaseInsensitiveFiltering: true,
 		maxHeight: 200, numberDisplayed: 5, nonSelectedText: 'Niemand',
 		nSelectedText: 'ausgewählt', allSelectedText: false,
diff --git a/templates/macros.html b/templates/macros.html
index 684638d27697ff3176acda22a0d2169d876124c4..5dae665290702f9fd3bea01bafb9faee5a455e43 100644
--- a/templates/macros.html
+++ b/templates/macros.html
@@ -262,7 +262,7 @@ $('#embedcodebtn').popover(
 						</li>
 						{% if ismod() %}
 						<li class="pull-right">
-							<button class="btn btn-default" data-toggle="modal" data-target="#editstream">
+							<button class="btn btn-default" data-toggle="modal" data-target="#editstream" data-path="{{ 'lectures.%i.stream_settings'%lecture.id }}" data-value='{{ lecture.stream_settings|e }}'>
 								<span class="glyphicon glyphicon-transfer"></span>
 							</button>
 						</li>