Setting Streamdefinition when adding camera to recorder

After adding a camera to the recorder I want to set the streaming settings (resolution, fps, etc) and add these streams to be available ‘when needed’.

Setting the streaming settings works but adding the streams does not.

I use this code:

StreamDefinition def = firstCamera.StreamFolder.Streams.FirstOrDefault();
                    ClassCollectionServerTask task1 = def.AddStream();
                    ClassCollectionServerTask task2 = def.AddStream();
 
                    StreamDefinition def2 = new StreamDefinition(def.ServerId, task2.Path);
                    def2.StreamUsageChildItems.FirstOrDefault().SetProperty("Name", settingsDriver["stream1Name"]);
                    def2.StreamUsageChildItems.FirstOrDefault().SetProperty("DisplayName", settingsDriver["stream1Name"]);
                    def2.StreamUsageChildItems.ElementAt(1).SetProperty("Name", settingsDriver["stream2Name"]);
                    def2.StreamUsageChildItems.ElementAt(1).SetProperty("DisplayName", settingsDriver["stream2Name"]);
                    def2.StreamUsageChildItems.ElementAt(2).SetProperty("Name", settingsDriver["stream3Name"]);
                    def2.StreamUsageChildItems.ElementAt(2).SetProperty("DisplayName", settingsDriver["stream3Name"]);
 
                    VideoOS.ConfigurationApi.ClientService.ValidateResult res6 = def2.ValidateItem();
                    if (res6.ValidatedOk)
                        def2.Save();
                        
                    firstCamera.StreamFolder.Streams.FirstOrDefault().Save();
                    firstCamera.StreamFolder.Save();
                    firstCamera.Save();
                    hardware.ValidateItem();
                    hardware.Save();

We tested your code and a sample and it was working. We could add a second stream.

As a test, we used ConfigAddCameras sample -

https://doc.developer.milestonesys.com/html/index.html?base=samples/configaddcameras.html&tree=tree_search.html?search=configadd

We added following code after AddDeviceGroupMember, can you please test it?

// add stream
StreamDefinition def = camera.StreamFolder.Streams.FirstOrDefault();
ClassCollectionServerTask task2 = def.AddStream();
 
StreamDefinition def2 = new StreamDefinition(def.ServerId, task2.Path);
def2.StreamUsageChildItems.ElementAt(1).SetProperty("Name", "Video stream 2");
def2.StreamUsageChildItems.ElementAt(1).SetProperty("DisplayName", "Video stream 02");
VideoOS.ConfigurationApi.ClientService.ValidateResult res6 = def2.ValidateItem();
 
if (res6.ValidatedOk)
    def2.Save();
camera.StreamFolder.Streams.FirstOrDefault().Save();
camera.StreamFolder.Save();
camera.Save();
 
hardware.ValidateItem();
hardware.Save();