@@ -157,9 +157,9 @@ void VideoStreamPlayer::_notification(int p_notification) {
157157 double delta = first_frame ? 0 : get_process_delta_time ();
158158 first_frame = false ;
159159
160- resampler.set_playback_speed (Engine::get_singleton ()->get_time_scale ());
160+ resampler.set_playback_speed (Engine::get_singleton ()->get_time_scale () * speed_scale );
161161
162- playback->update (delta); // playback->is_playing() returns false in the last video frame
162+ playback->update (delta * speed_scale ); // playback->is_playing() returns false in the last video frame
163163
164164 if (!playback->is_playing ()) {
165165 resampler.flush ();
@@ -433,6 +433,15 @@ float VideoStreamPlayer::get_volume_db() const {
433433 }
434434}
435435
436+ void VideoStreamPlayer::set_speed_scale (float p_speed_scale) {
437+ ERR_FAIL_COND (p_speed_scale < 0.0 );
438+ speed_scale = p_speed_scale;
439+ }
440+
441+ float VideoStreamPlayer::get_speed_scale () const {
442+ return speed_scale;
443+ }
444+
436445String VideoStreamPlayer::get_stream_name () const {
437446 if (stream.is_null ()) {
438447 return " <No Stream>" ;
@@ -530,6 +539,9 @@ void VideoStreamPlayer::_bind_methods() {
530539 ClassDB::bind_method (D_METHOD (" set_volume_db" , " db" ), &VideoStreamPlayer::set_volume_db);
531540 ClassDB::bind_method (D_METHOD (" get_volume_db" ), &VideoStreamPlayer::get_volume_db);
532541
542+ ClassDB::bind_method (D_METHOD (" set_speed_scale" , " speed_scale" ), &VideoStreamPlayer::set_speed_scale);
543+ ClassDB::bind_method (D_METHOD (" get_speed_scale" ), &VideoStreamPlayer::get_speed_scale);
544+
533545 ClassDB::bind_method (D_METHOD (" set_audio_track" , " track" ), &VideoStreamPlayer::set_audio_track);
534546 ClassDB::bind_method (D_METHOD (" get_audio_track" ), &VideoStreamPlayer::get_audio_track);
535547
@@ -559,6 +571,7 @@ void VideoStreamPlayer::_bind_methods() {
559571 ADD_PROPERTY (PropertyInfo (Variant::OBJECT, " stream" , PROPERTY_HINT_RESOURCE_TYPE, " VideoStream" ), " set_stream" , " get_stream" );
560572 ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " volume_db" , PROPERTY_HINT_RANGE, " -80,24,0.01,suffix:dB" ), " set_volume_db" , " get_volume_db" );
561573 ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " volume" , PROPERTY_HINT_RANGE, " 0,15,0.01,exp" , PROPERTY_USAGE_NONE), " set_volume" , " get_volume" );
574+ ADD_PROPERTY (PropertyInfo (Variant::FLOAT, " speed_scale" , PROPERTY_HINT_RANGE, " 0,4,0.001,or_greater" ), " set_speed_scale" , " get_speed_scale" );
562575 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " autoplay" ), " set_autoplay" , " has_autoplay" );
563576 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " paused" ), " set_paused" , " is_paused" );
564577 ADD_PROPERTY (PropertyInfo (Variant::BOOL, " expand" ), " set_expand" , " has_expand" );
0 commit comments