From my experience this happens when you have your phone set to 'optimised'. This means that the image/ video is not stored on the phone itself, but in the cloud, freeing up space on your handset. However, when you do eventually fill up the handset, then decide you want to watch, send or view said item, it cant download it back to the phone (which it needs to do in order to send) due to lack of space.
If you find yourself in this situation then the only thing Ive found to work is to plug my phone into my computer, transfer all visable videos/pictures. Then go through them on my phone and delete the ones I can do without. This then free's up the space on my phone in order to download the the ones I really want.
Id advise having your 'Photos & Camera' settings set to 'Download and keep originals' to prevent this happening in the future. However, it does mean the space on your phone is pretty valuble and you're likely to need to take stuff off (maybe transfer to a hard drive) regularly. Another thing I've learned since my brother became a manager at Apple is that videos take up a lot of space on your phone when youve initially recorded them. If you transfer them to your computer, then back again, they appear smaller, using less storage space.
I've noticed lots of people on here saying that they are signing out of icloud then signing back in but find they are losing stuff. BACK UP FIRST. If you dont then you are likely to lose things and not get them back. If you did back up and find that a few things are missing, give it time. it's literally pulling all your stuff from the freaking sky, dont expect it there in minutes. Mine has sometimes taken hours
Hope this helps someone