When you add android:configChanges="orientation|screenSize" and avoid the restart the system will call onConfigurationChanged() on your activity.
In here you can handle anything you want to that might be important for your application, for example resizing the video view for the new orientation.
If you don't do this the system will use the old view dimensions which no longer match the display.
See this answer for an example of how to resize a video view: https://stackoverflow.com/a/14113271/334402
Google's Camerea2Vdieo example (https://github.com/googlesamples/android-Camera2Video) shows one approach to resize a video when a surface has changed - they do not stop the activity restarting but the principles are the same, in that you detect the 'window' has changed and then measure the new size and reset accordingly:
Detecting the change using a SurfaceTextureListener:
/**
* {@link TextureView.SurfaceTextureListener} handles several lifecycle events on a
* {@link TextureView}.
*/
private TextureView.SurfaceTextureListener mSurfaceTextureListener
= new TextureView.SurfaceTextureListener() {
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture,
int width, int height) {
openCamera(width, height);
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture,
int width, int height) {
configureTransform(width, height);
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
return true;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
}
};
The transformation of the texture is done in configureTransform which you can see at the link above.