Tensor shape modification using slicing and None
Indeed, None adds a new dimension. You can also use tf.newaxis for this which is a bit more explicit IMHO. 
The new dimension is added in axis 1 because that's where it appears in the index. E.g. input[:, :, None] should result in shape (19, 4, 1, 64, 64, 3) and so on.
It might get clearer if we write all the dimensions in the slicing: input[:, None, :, :, :, :]. In slicing, : simply means taking all elements of the dimension. So by using one :, we take all elements of dimension 0 and then "move on" to dimension 1. Since None appears here, we know that the new size-1 axis should be in dimension 1. Accordingly, the remaining dimensions get "pushed back".
I am bit puzzled by how to read and understand a simple line of code:

I have a tensor input of shape (19,4,64,64,3).
The line of code input[:, None] returns a tensor of shape (19, 1,
4, 64, 64, 3).

How should I understand the behavior of that line? It seems that None is adding a dimension, with a size of 1. But why is this added on that specific position (between 19 and 4)?