Search Unity

Video Multicapture with Unity Recorder

Discussion in 'Audio & Video' started by Faiz_Belk, Apr 19, 2021.

  1. Faiz_Belk

    Faiz_Belk

    Joined:
    Mar 1, 2021
    Posts:
    41
    Hello everyone, I'm looking to capture from multiple cameras with Unity Recorder using a loop as you can see:


    Code (CSharp):
    1.  
    2. var controllerSettings = ScriptableObject.CreateInstance<RecorderControllerSettings>();
    3.             var TestRecorderController = new RecorderController(controllerSettings);
    4. foreach (CameraParam cam in camerasInJson.cameras)
    5.         {    var videoRecorder = ScriptableObject.CreateInstance<MovieRecorderSettings>();
    6.             videoRecorder.name = cam.camera_name;
    7.             videoRecorder.Enabled = true;
    8.             videoRecorder.VideoBitRateMode = VideoBitrateMode.High;
    9.      
    10.             videoRecorder.ImageInputSettings = new GameViewInputSettings
    11.             {
    12.                 OutputWidth = 1920,
    13.                 OutputHeight = 1080
    14.             };
    15.          
    16.        
    17.             videoRecorder.AudioInputSettings.PreserveAudio = true;
    18.             //videoRecorder.OutputFile; // Change this to change the output file name (no extension)
    19.        
    20.             controllerSettings.AddRecorderSettings(videoRecorder);
    21.             controllerSettings.SetRecordModeToFrameInterval(0, 59); //
    22.             controllerSettings.FrameRate = 30;
    23.          
    24.             RecorderOptions.VerboseMode = false;
    25.             TestRecorderController.PrepareRecording();
    26. }
    27.  
    28.         TestRecorderController.StartRecording();
    29.  
    30.  
    31. }
    But it doesn't work. Do u have any idea ?

    Thank u.
     

    Attached Files:

  2. unitybru

    unitybru

    Unity Technologies

    Joined:
    Jan 28, 2020
    Posts:
    225
    Your script records the GameView for each camera.
    Also, you should change the output file to avoid writing to the same file.

    Try this
    Code (CSharp):
    1. private void RecordCamsFromJSON()
    2. {
    3.     var controllerSettings = ScriptableObject.CreateInstance<RecorderControllerSettings>();
    4.     var TestRecorderController = new RecorderController(controllerSettings);
    5.     foreach (CameraParam cam in camerasInJson.cameras)
    6.     {
    7.         var videoRecorder = ScriptableObject.CreateInstance<MovieRecorderSettings>();
    8.         videoRecorder.name = cam.camera_name;
    9.         videoRecorder.Enabled = true;
    10.         videoRecorder.VideoBitRateMode = VideoBitrateMode.High;
    11.  
    12.         videoRecorder.ImageInputSettings = new CameraInputSettings
    13.         {
    14.             Source = ImageSource.TaggedCamera,
    15.             OutputWidth = 1920,
    16.             OutputHeight = 1080,
    17.             CameraTag = cam.camera_name, // make sure your tags are set correctly in your project
    18.             RecordTransparency = false,
    19.             CaptureUI = false,
    20.             FlipFinalOutput = false
    21.         };
    22.  
    23.         videoRecorder.AudioInputSettings.PreserveAudio = true;
    24.         videoRecorder.OutputFile = $"Recordings/movie_{cam.camera_name}"; // no extension please
    25.  
    26.         controllerSettings.AddRecorderSettings(videoRecorder);
    27.         controllerSettings.SetRecordModeToFrameInterval(0, 59); // 2 secs @ 30 FPS
    28.         controllerSettings.FrameRate = 30;
    29.  
    30.         RecorderOptions.VerboseMode = false;
    31.         TestRecorderController.PrepareRecording();
    32.     }
    33.  
    34.     TestRecorderController.StartRecording();
    35. }