Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'm trying to remove a few seconds off the front of a video stream (audio already excluded), and I'm getting strange results: I would think that for every second I increase -ss by, the resulting file would be a second shorter... that doesn't seem to be the case.

original     ==> 01:04:52.84
-ss 19       ==> 01:04:42.84 (diff = 10) [command history shown below]
-ss 20       ==> 01:04:32.84 (diff = 20) [command history shown below]
-ss 21       ==> 01:04:32.84 (diff = 20)
-ss 25       ==> 01:04:32.84 (diff = 20)
-ss 0:0:25.0 ==> 01:04:32.84 (diff = 20)
-ss 0:0:25.5 ==> 01:04:32.84 (diff = 20) [command history shown below]

Command: ffmpeg -ss # -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4

Here's the command history for 19 & 20

# ffmpeg -ss 19 -i temp.mp4 -y -vcodec copy  temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 10 2011 21:25:11 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
  libavutil    51. 11. 1 / 51. 11. 1
  libavcodec   53. 10. 0 / 53. 10. 0
  libavformat  53.  6. 0 / 53.  6. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 28. 1 /  2. 28. 1
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
    Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
    Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=97071 fps=42523 q=-1.0 Lsize=  262684kB time=01:04:33.84 bitrate= 555.5kbits/s
video:261923kB audio:0kB global headers:0kB muxing overhead 0.290418%
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
  Duration: 01:04:42.84, start: 0.000000, bitrate: 554 kb/s


# ffmpeg -ss 20 -i temp.mp4 -y -vcodec copy  temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 10 2011 21:25:11 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
  libavutil    51. 11. 1 / 51. 11. 1
  libavcodec   53. 10. 0 / 53. 10. 0
  libavformat  53.  6. 0 / 53.  6. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 28. 1 /  2. 28. 1
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
    Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
    Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=96821 fps=47168 q=-1.0 Lsize=  262003kB time=01:04:32.84 bitrate= 554.2kbits/s
video:261244kB audio:0kB global headers:0kB muxing overhead 0.290410%
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
  Duration: 01:04:32.84, start: 0.000000, bitrate: 554 kb/s

# ffmpeg -ss 0:0:25.5 -i temp.mp4 -y -vcodec copy  temp_croppedFromStart.mp4; ffmpeg -i temp.mp4 2>&1 | grep Duration; ffmpeg -i temp_croppedFromStart.mp4 2>&1 | grep Duration
ffmpeg version N-31809-g9acffed, Copyright (c) 2000-2011 the FFmpeg developers
  built on Aug 10 2011 21:25:11 with gcc 4.4.5
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab
  libavutil    51. 11. 1 / 51. 11. 1
  libavcodec   53. 10. 0 / 53. 10. 0
  libavformat  53.  6. 0 / 53.  6. 0
  libavdevice  53.  2. 0 / 53.  2. 0
  libavfilter   2. 28. 1 /  2. 28. 1
  libswscale    2.  0. 0 /  2.  0. 0
  libpostproc  51.  2. 0 / 51.  2. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'temp.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
    Stream #0.0(und): Video: h264 (Constrained Baseline), yuv420p, 960x640, 552 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Output #0, mp4, to 'temp_croppedFromStart.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.6.0
    Stream #0.0(und): Video: libx264, yuv420p, 960x640, q=2-31, 552 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop, [?] for help
frame=96821 fps=45920 q=-1.0 Lsize=  262003kB time=01:04:27.32 bitrate= 555.0kbits/s
video:261244kB audio:0kB global headers:0kB muxing overhead 0.290424%
  Duration: 01:04:52.84, start: 0.000000, bitrate: 553 kb/s
  Duration: 01:04:32.84, start: 0.000000, bitrate: 554 kb/s
share|improve this question
    
I tried your line, C:\>ffmpeg -ss # -i temp.mp4 -y -vcodec copy temp_croppedFromStart.mp4 and it worked with my mp4 here's a good one to test it on youtube.com/watch?v=c1kTgHJ_RHo maybe your video codec is funny, not well supported or something, try changing it to something else maybe, and report back –  barlop Sep 18 '11 at 19:07

1 Answer 1

With H.264 video you have group of pictures.

To save space some of the frames are inter frames

You can only cut H.264 on an Intra-frame AKA I-frame.

What I did was transcode using a lossless codec, then reencode

ffmpeg -i input.mkv -c:v ffvhuff FFVhuff.mkv

ffmpeg -ss 26.818 -i FFVhuff.mkv trim.mkv

http://svnpenn.blogspot.com/2011/10/ffmpeg-cut-to-frame-same-audio.html

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.