My best guess is that it's only playing the first frame because it is constantly switching between the run and slide or jump animations
If the player is pressing right and down, your code will first check if it's moving right and play the run animations, then checking if it's sliding and so play the slide animation.
Because godot thinks you are already playing the run animation, it will start the slide animation from the start.
I would recommend combining both times you have an if statement about the horizontal axis. Possibly:
if Input.is_action_pressed("left"):
velocity.x = -SPEED
$AnimatedSprite.flip_h = true
if Input.is_action_pressed("down"):
velocity.x = -SPEED * 2
$AnimatedSprite.play("slide")
$standingshape.disabled = true
$crouchshape.disabled = false
else:
$AnimatedSprite.play("run")
elif Input.is_action_pressed("right"):
velocity.x = SPEED
$AnimatedSprite.flip_h = false
if Input.is_action_pressed("down"):
velocity.x = SPEED * 2
$AnimatedSprite.play("slide")
$standingshape.disabled = true
$crouchshape.disabled = false
else:
$AnimatedSprite.play("run")
Let me know if that doesn't work or you need more clarification