I have downloaded a few lectures from my uni website but they look like they can not be seeked/skipped properly either by clicking on a specific timestamp on my video player or by skipping forward by 5/10 seconds (e.g. using arrows on VLC or MPC-BE), the playback just stops and a still frame is shown
Attempting ffmpeg -i input.mp4 -c:v copy -c:a copy output.mp4
does not fix the problem
ffmpeg -hide_banner -i input.mp4
output:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf59.31.100
Duration: 01:24:57.36, start: 0.000000, bitrate: 562 kb/s
Stream #0:0[0x1](und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(progressive), 1920x1080 [SAR 1:1 DAR 16:9], 430 kb/s, 25 fps, 25 tbr, 25 tbn (default)
Metadata:
handler_name : VideoHandler
vendor_id : [0][0][0][0]
encoder : Lavc59.43.100 libopenh264
Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 32000 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
handler_name : SoundHandler
vendor_id : [0][0][0][0]
ffprobe -loglevel error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_duration_time,pkt_pos -of csv input.mp4
output shows a single line, which I'm not sure is a good sign:
frame,0.040000,71
Is there a way to fix the problem without reencoding the whole video completely?
EDIT1: ffprobe -select_streams v:0 -show_entries frame=key_frame,pict_type -of csv input.mp4 | grep -n "I" >> result.txt
shows a single I-frame:
1:frame,1,I
ffprobe -select_streams v:0 -show_frames input.mp4 > result.txt
. Look forpict_type=I
. Regardless, I recommend you to re-encode the video.