1

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
3
  • If there are no key frames, there are no seeking points, and the video is un-seekable. Try using FFprobe for counting the I-Frames (not all I-Frames are key-frames). Do it just because it is interesting. Re-encoding is the only solution I know.
    – Rotem
    Sep 17, 2022 at 21:16
  • @Rotem added the count of I-frames, somehow there is only an I-frame(???) Sep 18, 2022 at 0:30
  • I don't think the FFprobe command counts I-Frames that are not key frame. Try simpler command: ffprobe -select_streams v:0 -show_frames input.mp4 > result.txt. Look for pict_type=I. Regardless, I recommend you to re-encode the video.
    – Rotem
    Sep 18, 2022 at 9:08

0

You must log in to answer this question.

Browse other questions tagged .