Hello, I'm having a strange problem when extracting frames from a video recorded from a GoPro HERO 5 Black camera (1080p, 60FPS, Linear FOV). When I view the extracted frames it appears that every two frames is a duplicate of one another, i.e. frames 1 and 2 look the same, frame 3 shows a change, but frame 4 again looks the same as 3.
I've used `compare` from ImageMagick to actually determine whether the frames are different, and they are, the diff looks like a frame itself but with high brightness. (see frames 1, 2, and the diff at this link: https://drive.google.com/open?id=1Tn3dbZ6Ss7OdhHh6OiJT4qsPXSqCVVgF). If you visually compare frames 1 and 2 then to the human eye they look impercetibly different, yet the diff shows that there is a difference. When I look at the frames in a photo viewer and iterate through them rapidly the apparent motion is much more jerky than in the source video. If I stitch the frames back together to a video then I get a smooth 60FPS video just like the source. The motivation for needing smooth non-duplicated frames is because they are to be used as input to an optical flow algorithm which then produces inaccurate optical flow estimations due to the similarity between pairs of frames starting with an odd frame number. I dumped the frames from the video to a folder using the following command: $ ffmpeg -i GOPR0325.MP4 'gopro/frame_%06d.jpg' ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers built with gcc 7.2.0 (GCC) configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig - -enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-l ibgsm --enable-libiec61883 --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg - -enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab -- enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-v ersion3 libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55c3a7e709c0] Using non-standard frame rate 59/1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GOPR0325.MP4': Metadata: major_brand : mp41 minor_version : 538120216 compatible_brands: mp41 creation_time : 2017-12-01T15:00:48.000000Z firmware : HD5.02.01.55.00 Duration: 00:00:08.41, start: 0.000000, bitrate: 30249 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 30110 kb/s, 59.94 fps, 59.94 t br, 60k tbn, 119.88 tbc (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro AVC encoder : GoPro AVC encoder timecode : 15:16:04:22 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro AAC timecode : 15:16:04:22 Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro TCD timecode : 15:16:04:22 Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 29 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro MET Stream #0:4(eng): Data: none (fdsc / 0x63736466), 14 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro SOS Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native)) Press [q] to stop, [?] for help Output #0, image2, to 'gopro/frame_%06d.jpg': Metadata: major_brand : mp41 minor_version : 538120216 compatible_brands: mp41 firmware : HD5.02.01.55.00 encoder : Lavf57.83.100 Stream #0:0(eng): Video: mjpeg, yuvj420p(pc), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 59.94 fps, 59.94 tbn, 59.94 tbc (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro AVC timecode : 15:16:04:22 encoder : Lavc57.107.100 mjpeg Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1 frame= 503 fps= 48 q=24.8 Lsize=N/A time=00:00:08.39 bitrate=N/A speed= 0.8x video:20242kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown $ ffprobe GOPR0325.MP4 ffprobe version 3.4 Copyright (c) 2007-2017 the FFmpeg developers built with gcc 7.2.0 (GCC) configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enab le-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-shared --enable-version3 libavutil 55. 78.100 / 55. 78.100 libavcodec 57.107.100 / 57.107.100 libavformat 57. 83.100 / 57. 83.100 libavdevice 57. 10.100 / 57. 10.100 libavfilter 6.107.100 / 6.107.100 libavresample 3. 7. 0 / 3. 7. 0 libswscale 4. 8.100 / 4. 8.100 libswresample 2. 9.100 / 2. 9.100 libpostproc 54. 7.100 / 54. 7.100 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55ecc7872200] Using non-standard frame rate 59/1 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'GOPR0325.MP4': Metadata: major_brand : mp41 minor_version : 538120216 compatible_brands: mp41 creation_time : 2017-12-01T15:00:48.000000Z firmware : HD5.02.01.55.00 Duration: 00:00:08.41, start: 0.000000, bitrate: 30249 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 30110 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro AVC encoder : GoPro AVC encoder timecode : 15:16:04:22 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro AAC timecode : 15:16:04:22 Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro TCD timecode : 15:16:04:22 Stream #0:3(eng): Data: none (gpmd / 0x646D7067), 29 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro MET Stream #0:4(eng): Data: none (fdsc / 0x63736466), 14 kb/s (default) Metadata: creation_time : 2017-12-01T15:00:48.000000Z handler_name : GoPro SOS Unsupported codec with id 0 for input stream 2 Unsupported codec with id 0 for input stream 3 Unsupported codec with id 0 for input stream 4 The source video, frames, and diff between frames 1 and 2 are available on google drive: https://drive.google.com/open?id=1Tn3dbZ6Ss7OdhHh6OiJT4qsPXSqCVVgF Can anyone shed any light on this? Many thanks, Will Price -- Will Price | PhD student | Visual Information Laboratory | University of Bristol _______________________________________________ ffmpeg-user mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-user To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
