Skip to content

Commit

Permalink
Add exception on outside of boundaries subclip
Browse files Browse the repository at this point in the history
  • Loading branch information
osaajani committed Jan 11, 2025
1 parent e9559d8 commit ac2ef2d
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add background radius to text clips

### Changed <!-- for changes in existing functionality -->
- Subclipping outside of clip boundaries now raise an exception

### Deprecated <!-- for soon-to-be removed features -->

Expand Down
8 changes: 8 additions & 0 deletions moviepy/Clip.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,7 @@ def subclipped(self, start_time=0, end_time=None):
+ "should be smaller than the clip's "
+ "duration (%.02f)." % self.duration
)


new_clip = self.time_transform(lambda t: t + start_time, apply_to=[])

Expand All @@ -422,6 +423,13 @@ def subclipped(self, start_time=0, end_time=None):
end_time = self.duration + end_time

if end_time is not None:
if (self.duration is not None) and (end_time > self.duration):
raise ValueError(
"end_time (%.02f) " % end_time
+ "should be smaller or equal to the clip's "
+ "duration (%.02f)." % self.duration
)

new_clip.duration = end_time - start_time
new_clip.end = new_clip.start + new_clip.duration

Expand Down
1 change: 1 addition & 0 deletions tests/test_Clip.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ def test_clip_copy(copy_func):
(3, 3, None, ValueError), # start_time == duration
(3, 1, -1, 1), # negative end_time
(None, 1, -1, ValueError), # negative end_time for clip without duration
(1, 0, 2, ValueError), # end_time after video end should raise exception
),
)
def test_clip_subclip(duration, start_time, end_time, expected_duration):
Expand Down
13 changes: 7 additions & 6 deletions tests/test_VideoClip.py
Original file line number Diff line number Diff line change
Expand Up @@ -389,16 +389,17 @@ def test_afterimage(util):

def test_add():
clip = VideoFileClip("media/fire2.mp4")
new_clip = clip[0:1] + clip[2:3.2]
assert new_clip.duration == 2.2
assert np.array_equal(new_clip[1.1], clip[2.1])
print(clip.duration)
new_clip = clip[0:1] + clip[1.5:2]
assert new_clip.duration == 1.5
assert np.array_equal(new_clip[1.1], clip[1.6])


def test_slice_tuples():
clip = VideoFileClip("media/fire2.mp4")
new_clip = clip[0:1, 2:3.2]
assert new_clip.duration == 2.2
assert np.array_equal(new_clip[1.1], clip[2.1])
new_clip = clip[0:1, 1.5:2]
assert new_clip.duration == 1.5
assert np.array_equal(new_clip[1.1], clip[1.6])


def test_slice_mirror():
Expand Down

0 comments on commit ac2ef2d

Please sign in to comment.