diff --git a/src/cam/main.cpp b/src/cam/main.cpp
index 1ca7862bf237d85f..c9239ac62a83ce31 100644
--- a/src/cam/main.cpp
+++ b/src/cam/main.cpp
@@ -42,6 +42,8 @@ void signalHandler(int signal)
 static int parseOptions(int argc, char *argv[])
 {
 	KeyValueParser formatKeyValue;
+	formatKeyValue.addOption("id", OptionInteger, "ID of stream",
+				 ArgumentRequired);
 	formatKeyValue.addOption("width", OptionInteger, "Width in pixels",
 				 ArgumentRequired);
 	formatKeyValue.addOption("height", OptionInteger, "Height in pixels",
@@ -61,7 +63,7 @@ static int parseOptions(int argc, char *argv[])
 			 "The default file name is 'frame-#.bin'.",
 			 "file", ArgumentOptional, "filename");
 	parser.addOption(OptFormat, &formatKeyValue,
-			 "Set format of the camera's first stream", "format");
+			 "Set format of the camera's first stream", "format", true);
 	parser.addOption(OptHelp, OptionNone, "Display this help message",
 			 "help");
 	parser.addOption(OptList, OptionNone, "List all cameras", "list");
@@ -77,22 +79,37 @@ static int parseOptions(int argc, char *argv[])
 
 static int configureStreams(Camera *camera, std::set<Stream *> &streams)
 {
-	KeyValueParser::Options format = options[OptFormat];
-	Stream *id = *streams.begin();
-
 	std::map<Stream *, StreamConfiguration> config =
 		camera->streamConfiguration(streams);
 
 	if (options.isSet(OptFormat)) {
-		if (format.isSet("width"))
-			config[id].width = format["width"];
+		int num = 0;
+		for (Stream *id : streams) {
+			for (auto const &value : options[OptFormat].toArray()) {
+				KeyValueParser::Options format = value.toKeyValues();
 
-		if (format.isSet("height"))
-			config[id].height = format["height"];
+				if (!format.isSet("id") || format["id"] != num)
+					continue;
 
-		/* TODO: Translate 4CC string to ID. */
-		if (format.isSet("pixelformat"))
-			config[id].pixelFormat = format["pixelformat"];
+				if (format.isSet("width"))
+					config[id].width = format["width"];
+
+				if (format.isSet("height"))
+					config[id].height = format["height"];
+
+				/* TODO: Translate 4CC string to ID. */
+				if (format.isSet("pixelformat"))
+					config[id].pixelFormat = format["pixelformat"];
+			}
+			num++;
+		}
+	}
+
+	for (auto const &it : config) {
+		const StreamConfiguration &conf = it.second;
+
+		std::cout << "size: " << conf.width << "x" << conf.height
+			  << "pixelformat: " << conf.pixelFormat << std::endl;
 	}
 
 	return camera->configureStreams(config);
