[FFmpeg-trac] #7721(avutil:new): Unable to seek ≥ 100 hours

FFmpeg trac at avcodec.org
Fri Feb 8 23:09:31 EET 2019


#7721: Unable to seek ≥ 100 hours
------------------------------------+----------------------------------
             Reporter:  Gamnn       |                    Owner:
                 Type:  defect      |                   Status:  new
             Priority:  normal      |                Component:  avutil
              Version:  git-master  |               Resolution:
             Keywords:  seek        |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+----------------------------------
Changes (by cehoyos):

 * keywords:   => seek
 * version:  unspecified => git-master
 * component:  undetermined => avutil


Old description:

> When attempting to cut a segment of a long (577+ hour) .oga encapsulated
> FLAC, I found that you cannot enter greater than 99 hours with -ss.
>
> ffmpeg -v 9 -loglevel 99 -ss 100:00:00.00 -i input.raw.oga -f s16le -c:a
> pcm_s16le -t 01:00:00.00 out.raw
> ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
>   built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
>   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_6 --enable-shared
> --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-
> avresample --cc=clang --host-
> cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
> -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
> --host-ldflags= --enable-ffplay --enable-gpl --enable-libaom --enable-
> libbluray --enable-libmp3lame --enable-libopus --enable-librubberband
> --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-
> libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-
> libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype
> --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-
> libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex
> --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-
> libaom --enable-libsoxr
>   libavutil      56. 22.100 / 56. 22.100
>   libavcodec     58. 35.100 / 58. 35.100
>   libavformat    58. 20.100 / 58. 20.100
>   libavdevice    58.  5.100 / 58.  5.100
>   libavfilter     7. 40.101 /  7. 40.101
>   libavresample   4.  0.  0 /  4.  0.  0
>   libswscale      5.  3.100 /  5.  3.100
>   libswresample   3.  3.100 /  3.  3.100
>   libpostproc    55.  3.100 / 55.  3.100
> Splitting the commandline.
> Reading option '-v' ... matched as option 'v' (set logging level) with
> argument '9'.
> Reading option '-loglevel' ... matched as option 'loglevel' (set logging
> level) with argument '99'.
> Reading option '-ss' ... matched as option 'ss' (set the start time
> offset) with argument '100:00:00.00'.
> Reading option '-i' ... matched as input url with argument
> 'input.raw.oga'.
> Reading option '-f' ... matched as option 'f' (force format) with
> argument 's16le'.
> Reading option '-c:a' ... matched as option 'c' (codec name) with
> argument 'pcm_s16le'.
> Reading option '-t' ... matched as option 't' (record or transcode
> "duration" seconds of audio/video) with argument '01:00:00.00'.
> Reading option 'out.raw' ... matched as output url.
> Finished splitting the commandline.
> Parsing a group of options: global .
> Applying option v (set logging level) with argument 9.
> Successfully parsed a group of options.
> Parsing a group of options: input url input.raw.oga.
> Applying option ss (set the start time offset) with argument
> 100:00:00.00.
> Invalid duration specification for ss: 100:00:00.00
>
> 99 hours or less functions as intended:
>
> ffmpeg -ss 99:00:00.00 -i input.raw.oga -f s16le -c:a pcm_s16le -t
> 01:00:00.00 out.raw
> ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
>   built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
>   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_6 --enable-shared
> --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-
> avresample --cc=clang --host-
> cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
> -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
> --host-ldflags= --enable-ffplay --enable-gpl --enable-libaom --enable-
> libbluray --enable-libmp3lame --enable-libopus --enable-librubberband
> --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-
> libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-
> libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype
> --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-
> libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex
> --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-
> libaom --enable-libsoxr
>   libavutil      56. 22.100 / 56. 22.100
>   libavcodec     58. 35.100 / 58. 35.100
>   libavformat    58. 20.100 / 58. 20.100
>   libavdevice    58.  5.100 / 58.  5.100
>   libavfilter     7. 40.101 /  7. 40.101
>   libavresample   4.  0.  0 /  4.  0.  0
>   libswscale      5.  3.100 /  5.  3.100
>   libswresample   3.  3.100 /  3.  3.100
>   libpostproc    55.  3.100 / 55.  3.100
> Input #0, ogg, from 'input.raw.oga':
>   Duration: 577:24:57.06, start: 0.000000, bitrate: 220 kb/s
>     Stream #0:0: Audio: flac, 40000 Hz, mono, s16
> Stream mapping:
>   Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
> Press [q] to stop, [?] for help
> Output #0, s16le, to 'out.raw':
>   Metadata:
>     encoder         : Lavf58.20.100
>     Stream #0:0: Audio: pcm_s16le, 40000 Hz, mono, s16, 640 kb/s
>     Metadata:
>       encoder         : Lavc58.35.100 pcm_s16le
> size=  281250kB time=01:00:00.00 bitrate= 640.0kbits/s speed= 462x
> video:0kB audio:281250kB subtitle:0kB other streams:0kB global
> headers:0kB muxing overhead: 0.000000%
>
> -t likewise suffers from this limitation.
>
> -t 200:00:00.00 out.raw returns:
> Invalid duration specification for t: 200:00:00.00

New description:

 When attempting to cut a segment of a long (577+ hour) .oga encapsulated
 FLAC, I found that you cannot enter greater than 99 hours with -ss.
 {{{
 ffmpeg -v 9 -loglevel 99 -ss 100:00:00.00 -i input.raw.oga -f s16le -c:a
 pcm_s16le -t 01:00:00.00 out.raw
 ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
   built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_6 --enable-shared
 --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-
 avresample --cc=clang --host-
 cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
 -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
 --host-ldflags= --enable-ffplay --enable-gpl --enable-libaom --enable-
 libbluray --enable-libmp3lame --enable-libopus --enable-librubberband
 --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-
 libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype
 --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex
 --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-
 libaom --enable-libsoxr
   libavutil      56. 22.100 / 56. 22.100
   libavcodec     58. 35.100 / 58. 35.100
   libavformat    58. 20.100 / 58. 20.100
   libavdevice    58.  5.100 / 58.  5.100
   libavfilter     7. 40.101 /  7. 40.101
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  3.100 /  5.  3.100
   libswresample   3.  3.100 /  3.  3.100
   libpostproc    55.  3.100 / 55.  3.100
 Splitting the commandline.
 Reading option '-v' ... matched as option 'v' (set logging level) with
 argument '9'.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument '99'.
 Reading option '-ss' ... matched as option 'ss' (set the start time
 offset) with argument '100:00:00.00'.
 Reading option '-i' ... matched as input url with argument
 'input.raw.oga'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 's16le'.
 Reading option '-c:a' ... matched as option 'c' (codec name) with argument
 'pcm_s16le'.
 Reading option '-t' ... matched as option 't' (record or transcode
 "duration" seconds of audio/video) with argument '01:00:00.00'.
 Reading option 'out.raw' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option v (set logging level) with argument 9.
 Successfully parsed a group of options.
 Parsing a group of options: input url input.raw.oga.
 Applying option ss (set the start time offset) with argument 100:00:00.00.
 Invalid duration specification for ss: 100:00:00.00

 99 hours or less functions as intended:

 ffmpeg -ss 99:00:00.00 -i input.raw.oga -f s16le -c:a pcm_s16le -t
 01:00:00.00 out.raw
 ffmpeg version 4.1 Copyright (c) 2000-2018 the FFmpeg developers
   built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1_6 --enable-shared
 --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-
 avresample --cc=clang --host-
 cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include
 -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin'
 --host-ldflags= --enable-ffplay --enable-gpl --enable-libaom --enable-
 libbluray --enable-libmp3lame --enable-libopus --enable-librubberband
 --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-
 libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype
 --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-
 libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex
 --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-
 libaom --enable-libsoxr
   libavutil      56. 22.100 / 56. 22.100
   libavcodec     58. 35.100 / 58. 35.100
   libavformat    58. 20.100 / 58. 20.100
   libavdevice    58.  5.100 / 58.  5.100
   libavfilter     7. 40.101 /  7. 40.101
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  3.100 /  5.  3.100
   libswresample   3.  3.100 /  3.  3.100
   libpostproc    55.  3.100 / 55.  3.100
 Input #0, ogg, from 'input.raw.oga':
   Duration: 577:24:57.06, start: 0.000000, bitrate: 220 kb/s
     Stream #0:0: Audio: flac, 40000 Hz, mono, s16
 Stream mapping:
   Stream #0:0 -> #0:0 (flac (native) -> pcm_s16le (native))
 Press [q] to stop, [?] for help
 Output #0, s16le, to 'out.raw':
   Metadata:
     encoder         : Lavf58.20.100
     Stream #0:0: Audio: pcm_s16le, 40000 Hz, mono, s16, 640 kb/s
     Metadata:
       encoder         : Lavc58.35.100 pcm_s16le
 size=  281250kB time=01:00:00.00 bitrate= 640.0kbits/s speed= 462x
 video:0kB audio:281250kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.000000%
 }}}
 -t likewise suffers from this limitation.

 -t 200:00:00.00 out.raw returns:
 Invalid duration specification for t: 200:00:00.00

--

Comment:

 Please test this patch:
 {{{
 diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c
 index 59bec6c..167e822 100644
 --- a/libavutil/parseutils.c
 +++ b/libavutil/parseutils.c
 @@ -504,7 +504,7 @@ char *av_small_strptime(const char *p, const char
 *fmt, struct tm *dt)
          switch(c) {
          case 'H':
          case 'J':
 -            val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, 2);
 +            val = date_get_num(&p, 0, c == 'H' ? 23 : INT_MAX, c == 'H' ?
 2 : 4);

              if (val == -1)
                  return NULL;

 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7721#comment:4>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list