FFmpeg: Cutting 3 seconds at the beginning of a video leaves 5 seconds blank
This is answered in FFmpeg's Seeking wiki page.
The behavior is expected: If the time hits to a space between 2 key frames, it copies only audio up to the next keyframe and fills the video with black.

There are some methods to get also the beginning. 


One is to overlay the copied part with few seconds of re-encoded original.
Or, simply, seek to a bit earlier frame.
Or, find the previous keyframe and clip from that.
Or, reencoding the whole clip.


It's a bit pity that FFmpeg (AFAIK) doesn't have a feature for this built in.