Skip to content
Snippets Groups Projects
Commit e60edeba authored by spmohanty's avatar spmohanty
Browse files

Add video generation code

parent 1a5dada3
No related branches found
No related tags found
No related merge requests found
...@@ -55,7 +55,7 @@ def make_subprocess_call(command, shell=False): ...@@ -55,7 +55,7 @@ def make_subprocess_call(command, shell=False):
return result.returncode, stdout, stderr return result.returncode, stdout, stderr
def generate_movie_from_screenshot(frames_folder): def generate_movie_from_frames(frames_folder):
""" """
Expects the frames in the frames_folder folder Expects the frames in the frames_folder folder
and then use ffmpeg to generate the video and then use ffmpeg to generate the video
...@@ -66,9 +66,9 @@ def generate_movie_from_screenshot(frames_folder): ...@@ -66,9 +66,9 @@ def generate_movie_from_screenshot(frames_folder):
frames_path = os.path.join(frames_folder, "flatland_frame_%04d.png") frames_path = os.path.join(frames_folder, "flatland_frame_%04d.png")
thumb_output_path = os.path.join(frames_folder, "out_thumb.mp4") thumb_output_path = os.path.join(frames_folder, "out_thumb.mp4")
return_code, output, output_err = make_subprocess_call( return_code, output, output_err = make_subprocess_call(
"/usr/bin/ffmpeg -r 25 -start_number 0 -i " + "ffmpeg -r 7 -start_number 0 -i " +
frames_path + frames_path +
" -c:v libx264 -vf fps=25 -pix_fmt yuv420p -s 320x240 " + " -c:v libx264 -vf fps=7 -pix_fmt yuv420p -s 320x320 " +
thumb_output_path thumb_output_path
) )
if return_code != 0: if return_code != 0:
...@@ -79,9 +79,9 @@ def generate_movie_from_screenshot(frames_folder): ...@@ -79,9 +79,9 @@ def generate_movie_from_screenshot(frames_folder):
frames_path = os.path.join(frames_folder, "flatland_frame_%04d.png") frames_path = os.path.join(frames_folder, "flatland_frame_%04d.png")
output_path = os.path.join(frames_folder, "out.mp4") output_path = os.path.join(frames_folder, "out.mp4")
return_code, output, output_err = make_subprocess_call( return_code, output, output_err = make_subprocess_call(
"/usr/bin/ffmpeg -r 25 -start_number 0 -i " + "ffmpeg -r 7 -start_number 0 -i " +
frames_path + frames_path +
" -c:v libx264 -vf fps=25 -pix_fmt yuv420p -s 320x240 " + " -c:v libx264 -vf fps=7 -pix_fmt yuv420p -s 600x600 " +
output_path output_path
) )
if return_code != 0: if return_code != 0:
......
...@@ -375,14 +375,29 @@ class FlatlandRemoteEvaluationService: ...@@ -375,14 +375,29 @@ class FlatlandRemoteEvaluationService:
to operate on all the test environments. to operate on all the test environments.
""" """
) )
mean_reward = np.mean(self.simulation_rewards)
mean_percentage_complete = np.mean(self.simulation_percentage_complete)
# Generate the video
#
# Note, if you had depdency issues due to ffmpeg, you can
# install it by :
#
# conda install -c conda-forge x264 ffmpeg
print("Generating Video from thumbnails...")
video_output_path, video_thumb_output_path = \
aicrowd_helpers.generate_movie_from_frames(
self.vizualization_folder_name
)
print("Videos : ", video_output_path, video_thumb_output_path)
_command_response = {} _command_response = {}
_command_response['type'] = messages.FLATLAND_RL.ENV_SUBMIT_RESPONSE _command_response['type'] = messages.FLATLAND_RL.ENV_SUBMIT_RESPONSE
_payload = {} _payload = {}
_payload['mean_reward'] = np.mean(self.simulation_rewards) _payload['mean_reward'] = mean_reward
_payload['mean_percentage_complete'] = \ _payload['mean_percentage_complete'] = mean_percentage_complete
np.mean(self.simulation_percentage_complete)
_command_response['payload'] = _payload _command_response['payload'] = _payload
self.send_response(_command_response, command) self.send_response(_command_response, command)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment