Issue:
One of the videos I’m trying to edit is not playing properly inside Shotcut. It visibly stutters and appears to drop frames. Exporting the video also results in stuttering. This only happens in Shotcut: It plays back just fine in other media players (MPC-BE, VLC). Also, re-encoding with ffmpeg or Handbrake does not show any sign of stuttering. (the re-encoded video also does not stutter in Shotcut)
Haven’t had this issue with any other videos so far.
What I’ve already tried:
Tried various video modes (Automatic, 720p, 1080p, 29.97 fps, 30 fps, 60 fps, etc.)
Tried various export settings (e.g. different fps, progressive/interlaced, etc.)
confirmed that the timeline is set to 29.97 fps
Steps to reproduce:
I’ve uploaded two clips from the video to Dropbox.
Slight NSFW warning, these are clips from a Japanese adult video. No nudity visible except a man’s bare chest and some skimpy clothing.
Just download the stuttering clips and load them in Shotcut. Playing the clip already shows stuttering, which also shows after exporting.
Thanks! That does successfully create a non-stuttering intermediate video. It does take ages, though, and seems functionally equivalent to me using ffmpeg or Handbrake to create such a version myself.
Is there any reason why the source video is stuttering in the first place? It seems like a pretty standard AVC mp4, is not using variable frame rate or extreme bit rates and other videos with similar format / encoding settings do not show this issue (as far as I’ve seen).
Also wondering why the exported video still stutters. If the source is not edit-friendly, I’d expect playback or seeking issues within Shotcut, but not necessarily in the exported video.
Yes, I definitely clicked that checkbox once before (months ago).
According to MediaInfo, the source video is not variable frame rate, though. That’s why I’m wondering why this particular video doesn’t work well with Shotcut.
General
Complete name : XXX\CAWD-379.mp4
Format : MPEG-4
Format profile : Base Media
Codec ID : isom (isom/iso2/avc1/mp41)
File size : 4.81 GiB
Duration : 1 h 57 min
Overall bit rate : 5 865 kb/s
Writing application : Lavf59.16.100
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main@L4
Format settings : CABAC / 3 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 3 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 1 h 57 min
Source duration : 1 h 57 min
Bit rate : 5 744 kb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 29.970 (29970/1000) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.092
Stream size : 4.69 GiB (98%)
Source stream size : 4.69 GiB (98%)
Writing library : x264 core 164 r3081 19856cc
Encoding settings : cabac=1 / ref=3 / deblock=1:1:0 / analyse=0x1:0x131 / me=hex / subme=7 / psy=1 / psy_rd=0.50:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=0 / chroma_qp_offset=-2 / threads=8 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=infinite / keyint_min=60 / scenecut=0 / intra_refresh=0 / rc_lookahead=40 / rc=abr / mbtree=1 / bitrate=5744 / ratetol=1.0 / qcomp=0.50 / qpmin=10 / qpmax=69 / qpstep=4 / vbv_maxrate=8041 / vbv_bufsize=8041 / nal_hrd=none / filler=0 / ip_ratio=1.41 / aq=2:1.00
Color range : Limited
Color primaries : BT.709
Transfer characteristics : BT.709
Matrix coefficients : BT.709
Codec configuration box : avcC
Audio
ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : mp4a-40-2
Duration : 1 h 57 min
Bit rate mode : Constant
Bit rate : 128 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 107 MiB (2%)
Default : Yes
Alternate group : 1
I do not know how it computes the avg_frame_rate that correlates to the frame rate seen in Shotcut Properties, but I am not going to change my code in this area with a 16 year history because that requires massive testing and is a huge risk. Instead, you can simply convert the occasional file that does not work for you. Or, you can try to edit your video with MediaInfo, VLC, or MPC-BE
I’m not an expert in video encoding, though, so no idea whether there’s any meaningful differences in these values between the two videos.
Weird, that ffmpeg encodes the stuttering video just fine (using default params, something like “ffmpeg -i in.mp4 out.mp4”), while Shotcut produces a stutter on playback and export (no matter what fps the timeline is at or what fps the export is set to).
Anyway, not my call to make whether a bugfix is needed (or even possible). Just wanted to notify someone of this weird behaviour I’m seeing.