Opened 11 years ago

Closed 11 years ago

#2771 closed defect (invalid)

-segment_time generates unexpected file lengths

Reported by: Acc72 Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: segment
Cc: raptorderojo@gmail.com Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Hello,

I'm attempting to utilize the segmenter on an A/V stream, from my USB webcam. With the -segment_time option, I've configured ffmpeg to output a circular series of four (4) mp4 files, each three (3) seconds in length. However, ffmpeg generates files which are sixteen (16) seconds in length. Occasionally, random files are generated at shorter lengths (2 sec, 3 sec, 8 sec, etc...). However, most of them are generated sixteen (16) seconds in length.

Results change, if I play with the value for -segment_time:
(-Segment_time < 16) all 4 files generated @ 16 seconds.
(-segment_time >= 16) 1st file generated @ 33 seconds and all subsequent files generated @ 16 seconds.

Not sure why this is happening???

Zeranoe official build: ffmpeg-20130706-git-63d7684-win32-static

ffmpeg command line:

ffmpeg -f dshow -rtbufsize 10M -pix_fmt yuv420p -s 640x480 -ac 1 -i video="Logitech HD Webcam C310":audio="Microphone (HD Webcam C310)" -r 15 -vcodec libx264 -preset fast -crf 22 -b:v 250k -acodec libvo_aacenc -ar 8k -b:a 96k -ac 1 -f segment -map 0 -reset_timestamps 1 -segment_time 3 -segment_wrap 4 "out%2d.mp4"

Output:

ffmpeg version N-54499-g63d7684 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jul  6 2013 10:30:06 with gcc 4.7.3 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-fr
ei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable
-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-
libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-
libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-z
lib
  libavutil      52. 38.100 / 52. 38.100
  libavcodec     55. 18.102 / 55. 18.102
  libavformat    55. 11.101 / 55. 11.101
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 78.102 /  3. 78.102
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, dshow, from 'video=Logitech HD Webcam C310:audio=Microphone (HD Webcam C310)':
  Duration: N/A, start: 76871.688000, bitrate: 705 kb/s
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 640x480, 30 tbr, 10000k tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le, 44100 Hz, mono, s16, 705 kb/s
[libx264 @ 04289b20] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 04289b20] profile High, level 2.2
[libx264 @ 04289b20] 264 - core 133 r2334 a3ac64b - H.264/MPEG-4 AVC codec - Copyleft 2003-2013 - http://www.videolan.org/x264.html -
 options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 tre
llis=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=1 key
int=250 keyint_min=15 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=22.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ra
tio=1.40 aq=1:1.00
Output #0, segment, to 'out%2d.mp4':
  Metadata:
    encoder         : Lavf55.11.101
    Stream #0:0: Video: h264 (libx264), yuv420p, 640x480, q=-1--1, 250 kb/s, 90k tbn, 15 tbc
    Stream #0:1: Audio: aac (libvo_aacenc), 8000 Hz, mono, s16, 96 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo -> libx264)
  Stream #0:1 -> #0:1 (pcm_s16le -> libvo_aacenc)
Press [q] to stop, [?] for help
frame= 1164 fps= 15 q=-1.0 Lsize=N/A time=00:01:17.46 bitrate=N/A dup=19 drop=1131
video:5204kB audio:101kB subtitle:0 global headers:0kB muxing overhead -100.000405%
[libx264 @ 04289b20] frame I:5     Avg QP:16.94  size: 57563
[libx264 @ 04289b20] frame P:331   Avg QP:20.45  size: 10496
[libx264 @ 04289b20] frame B:828   Avg QP:23.23  size:  1891
[libx264 @ 04289b20] consecutive B-frames:  0.9%  6.5% 19.1% 73.5%
[libx264 @ 04289b20] mb I  I16..4:  2.3% 59.4% 38.3%
[libx264 @ 04289b20] mb P  I16..4:  0.3%  2.4%  0.7%  P16..4: 49.4% 24.4% 16.6%  0.0%  0.0%    skip: 6.3%
[libx264 @ 04289b20] mb B  I16..4:  0.5%  0.6%  0.1%  B16..8: 17.0%  3.6%  0.2%  direct:24.4%  skip:53.4%  L0:39.3% L1:43.2% BI:17.5%

[libx264 @ 04289b20] 8x8 transform intra:61.3% inter:65.3%
[libx264 @ 04289b20] coded y,uvDC,uvAC intra: 65.6% 95.7% 80.1% inter: 15.6% 47.7% 14.1%
[libx264 @ 04289b20] i16 v,h,dc,p: 17% 32% 37% 14%
[libx264 @ 04289b20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 22% 26%  4%  7%  6%  9%  6%  8%
[libx264 @ 04289b20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 25% 10%  6%  9%  8% 11%  7%  7%
[libx264 @ 04289b20] i8c dc,h,v,p: 52% 22% 15% 11%
[libx264 @ 04289b20] Weighted P-Frames: Y:2.7% UV:2.7%
[libx264 @ 04289b20] ref P L0: 54.9% 45.1%
[libx264 @ 04289b20] ref B L0: 69.7% 30.3%
[libx264 @ 04289b20] ref B L1: 92.2%  7.8%
[libx264 @ 04289b20] kb/s:549.25
[dshow @ 0289c000] real-time buffer 74% full! frame dropped!

Change History (4)

comment:1 by Acc72, 11 years ago

Cc: raptorderojo@gmail.com added
Version: unspecifiedgit-master

comment:2 by Carl Eugen Hoyos, 11 years ago

Priority: importantnormal

Is this a regression?

Is the problem only reproducible with external libraries (x264, libvo_aac) or also with -vcodec mpeg4 -strict -2 -acodec aac ?

in reply to:  2 comment:3 by Acc72, 11 years ago

Replying to cehoyos:

Is this a regression?

Is the problem only reproducible with external libraries (x264, libvo_aac) or also with -vcodec mpeg4 -strict -2 -acodec aac ?

Sorry, I don't understand your question... Regression?

When using your suggested options: -vcodec mpeg4 -strict -2 -acodec aac, ffmpeg generates 3 of the 4 files @ segment_time. However, 1 file is usually generated @ segment_time - 1 or -2.

Last edited 11 years ago by Acc72 (previous) (diff)

in reply to:  description comment:4 by Stefano Sabatini, 11 years ago

Component: undeterminedavformat
Keywords: segment added
Resolution: invalid
Status: newclosed

Replying to Acc72:

Hello,

I'm attempting to utilize the segmenter on an A/V stream, from my USB webcam. With the -segment_time option, I've configured ffmpeg to output a circular series of four (4) mp4 files, each three (3) seconds in length. However, ffmpeg generates files which are sixteen (16) seconds in length. Occasionally, random files are generated at shorter lengths (2 sec, 3 sec, 8 sec, etc...). However, most of them are generated sixteen (16) seconds in length.

Results change, if I play with the value for -segment_time:
(-Segment_time < 16) all 4 files generated @ 16 seconds.
(-segment_time >= 16) 1st file generated @ 33 seconds and all subsequent files generated @ 16 seconds.

Not sure why this is happening???

This is expected, from the docs:

Every segment starts with a keyframe of the selected reference stream, which is set through the reference_stream option.

Note that if you want accurate splitting for a video file, you need to make the input key frames correspond to the exact splitting times expected by the segmenter, or the segment muxer will start the new segment with the key frame found next after the specified start time.

...

You can use the ffmpeg -force_key_frames option to force key-frames, read the examples in the segment manual.

[...]

Note: See TracTickets for help on using tickets.