Adlibber
lvl.2
United Kingdom
Offline
|
Unlike it's big brother the Inspire, the DJI Spark creates a variable frame rate video file. The video stream is encoded using two different rates or rather frame durations: 33.359 ('fast') and 33.438 ms ('slow') and adjusts the very last duration to suit an overall frame rate of exactly 29.97 fps. After the first twenty-seven or so frames the video frames are written in groups of either nine or ten 'fast' frames plus one 'slow' frame. This is evidently done to match the 29.97 fps rate. These spark generated groups are, in total, just a few microseconds out from the duration time of ten or eleven constant duration frames at 29.97 fps.
If a Spark video is loaded into iMovie or Final Cut Pro without making any setting adjustments the editor will generate a constant video stream at the overall fps recorded in the file - 29.97 fps. Because of the missmatch in constant display versus variable recording, each of the the first ten frames in a group of eleven will be displayed too slowly and the 11th too quickly. This gives the characteristic stutter rate of about three stutters a second. Could the stutter be caused by the bit rate being insufficient to correctly display the 'slow' frame?
iMovie's handling of the video appears to be considerably improved, but not completely, by setting the frame override to 99% of 'normal', although on a large screen a much slower but still detectable stutter can be observed.
Using Handbrake to 'pre-process' the video by converting it to a constant frame rate of 29.97 fps and a bit rate of 24,000 kbps seems to greatly improve the quality in iMovie.
In Final Cut Pro you will observe the same behaviour. However in that software it is very easy to use a custom setting and to determine the suitable frame and bit rates which appears to work.
This work was made possible by using the excellent free apps FFmpeg and MediaInfo on my iMac running High Sierra and examining the video packet data.
DJI are aware of this issue.
|
|