Borrar filtros
Borrar filtros

How to save video from satelliteScenarioViewer?

63 visualizaciones (últimos 30 días)
Mike Powers
Mike Powers el 13 de Oct. de 2022
Respondida: Saffan el 14 de Sept. de 2023
Is there a way to save the video when using the satelliteScenarioViewer in the Satellite or Aerospace Comm Toolbox?
I can play it fine on my workstation but I'd like to present some animated results in a slide presentation.
  3 comentarios
Mike Powers
Mike Powers el 29 de Ag. de 2023
Thanks Vinayak- when I run this code (in R2022b) I get an error:
"Unrecognized method, property, or field 'isOpen' for class 'matlabshared.satellitescenario.Viewer'."
Brian LaRocca
Brian LaRocca el 8 de Sept. de 2023
I would like the same functionality. But I am getting the same results as Mike. I tried using a for loop, e.g. for n = 1:10 ... end to get around that and just see some saved results. However, that does not work since the satellitescenario object does not have a "step" method.

Iniciar sesión para comentar.

Respuesta aceptada

Saffan
Saffan el 14 de Sept. de 2023
Hi Mike,
Currently, there is no direct way to save a video from “satelliteScenarioViewer”, but there is a workaround using the “VideoWriter” class to combine each frame into a video. We can utilize the “screencapture” method from the File Exchange to obtain the required frames. Here is an example code snippet:
% Create a Scenario and a Viewer
sc = satelliteScenario(startTime,stopTime,sampleTime);
viewer = satelliteScenarioViewer(sc);
% Specify the name of the video file
videoFile = 'scenario_video.mp4';
% Create a VideoWriter object
videoWriter = VideoWriter(videoFile, 'MPEG-4');
% Set the frame rate of the video
videoWriter.FrameRate = 30;
% Open the video writer
open(videoWriter);
h=findall(0, 'Type', 'figure', 'Name', 'Satellite Scenario Viewer');
for time=startTime:minutes(1):stopTime
screencapture(h,'tempImg.png');
% Get the current frame as an image
frameImage = imread('tempImg.png');
% Write the frame to the video file
writeVideo(videoWriter, frameImage);
% Advance to the next frame
viewer.CurrentTime=time;
end
close(videoWriter);
You can choose the required playback speed of the simulation by setting the appropriate increment time in the ‘for’ loop.
Here is the link to “screencapture” method in File Exchange:
Please refer to the following documentation for more information on “VideoWriter” class:
Hope this helps!

Más respuestas (0)

Categorías

Más información sobre Spacecraft en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by