Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FFmpeg stuck on frame 0 during time-lapse conversion with `-ss` start time

Tags:

ffmpeg

I have a long video that I'd like to speed up into a time-lapse. Following the FFmpeg wiki, I came up with this incantation:

ffmpeg -i IMG_0238.MOV -r 60 -ss 00:04:41 -filter:v "setpts=PTS/60.0" -an output.mp4

It should clip off the first few minutes, then create a new 60fps video file at 60x the speed.

Although it spins all my CPU cores up to 100%, the status bar simply shows frame= 0 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A speed= 0x and never progresses.

The problem seems related to the -ss 00:04:41 flag, which specifies the start time; I want to drop the first 4 minutes 41 seconds of source video. When I omit this option, the video conversion succeeds.

Full log follows.


ffmpeg version 3.4.1 Copyright (c) 2000-2017 the FFmpeg developers
  built with Apple LLVM version 9.1.0 (clang-902.0.30)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.1 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  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 @ 0x7fb59b800000] stream 2, missing mandatory atoms, broken header
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7fb59b800000] stream 3, missing mandatory atoms, broken header
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'IMG_0238.MOV':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2017-04-20T16:25:14.000000Z
    com.apple.quicktime.location.ISO6709: +36.4610+025.3727+123.613/
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 7
    com.apple.quicktime.software: 10.3.1
    com.apple.quicktime.creationdate: 2017-04-20T19:25:13+0300
  Duration: 01:22:45.53, start: -0.000023, bitrate: 44171 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160, 44077 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      rotate          : 180
      creation_time   : 2017-04-20T16:25:14.000000Z
      handler_name    : Core Media Data Handler
      encoder         : H.264
    Side data:
      displaymatrix: rotation of -180.00 degrees
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 84 kb/s (default)
    Metadata:
      creation_time   : 2017-04-20T16:25:14.000000Z
      handler_name    : Core Media Data Handler
    Stream #0:2(und): Data: none (mebx / 0x7862656D) (default)
    Metadata:
      creation_time   : 2017-04-20T16:25:14.000000Z
      handler_name    : Core Media Data Handler
    Stream #0:3(und): Data: none (mebx / 0x7862656D) (default)
    Metadata:
      creation_time   : 2017-04-20T16:25:14.000000Z
      handler_name    : Core Media Data Handler
File 'output.mp4' already exists. Overwrite ? [y/N] y
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x7fb59b82b800] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 AVX2 LZCNT BMI2
[libx264 @ 0x7fb59b82b800] profile High, level 5.2
[libx264 @ 0x7fb59b82b800] 264 - core 148 r2795 aaa9aa8 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'output.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    com.apple.quicktime.creationdate: 2017-04-20T19:25:13+0300
    com.apple.quicktime.location.ISO6709: +36.4610+025.3727+123.613/
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 7
    com.apple.quicktime.software: 10.3.1
    encoder         : Lavf57.83.100
    Stream #0:0(und): Video: h264 (libx264) (avc1 / 0x31637661), yuv420p, 3840x2160, q=-1--1, 60 fps, 15360 tbn, 60 tbc (default)
    Metadata:
      encoder         : Lavc57.107.100 libx264
      creation_time   : 2017-04-20T16:25:14.000000Z
      handler_name    : Core Media Data Handler
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
      displaymatrix: rotation of -0.00 degrees
frame=    0 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=N/A speed=   0x
like image 576
rgov Avatar asked Apr 14 '18 09:04

rgov


1 Answers

Specify the -ss parameter before the -i parameter:

ffmpeg -ss 00:04:41 -i IMG_0238.MOV -r 60 -filter:v "setpts=PTS/60.0" -an output.mp4

What -ss as an output option does, is discard output till frames with the specified inpoint are received. Since that can take some time, the progress counter will appear to be 'stuck' but processing is ongoing. In your case, what further compounds the issue is that since you're collapsing timestamps to 1/60th, ss of 04:41 represents 04:41 x 60 of input being discarded. Increases the progress delay a lot, but more importantly, your output doesn't start where you want it to.

By using -ss as input option, ffmpeg will discard 04:41 of the input and then process the rest. The progress counter will also be active immediately.

like image 103
Gyan Avatar answered Sep 27 '22 04:09

Gyan