I kinda thought the same thing at first. I tested by using the sleep function before retrieving the image and I get the same results. My reasoning that the sleep function should work is that the video stream is working on a different thread and shouldn't be interrupted by the sleep function. Either way, that didn't work. I found that the computer was not reading all of the bytes in the data stream, so that is definitely a major part if not the whole problem. I know how to fix this (read the missing number of bytes from the data stream before moving on to reading the next section of the image).
I went through your video and found that the resolution was really low and could not read the code on your terminal but I will see again later tonight after some testing if I understand how to pull the code onto github. The following is the files I have created/modified for the streaming TCP tests just in case you want to look at the code now.
Regards,
Sunny