[FFmpeg-trac] #7184(ffmpeg:new): ffmetadata time are not treated as miliseconds as documentation says

FFmpeg trac at avcodec.org
Wed May 2 21:49:28 EEST 2018


#7184: ffmetadata time are not treated as miliseconds as documentation says
--------------------------------+--------------------------------------
             Reporter:  jonata  |                     Type:  defect
               Status:  new     |                 Priority:  normal
            Component:  ffmpeg  |                  Version:  git-master
             Keywords:          |               Blocked By:
             Blocking:          |  Reproduced by developer:  0
Analyzed by developer:  0       |
--------------------------------+--------------------------------------
 Summary: documentation says that ffmetadata time information (ex. "START",
 "END") needs to be written in miliseconds:

 https://ffmpeg.org/ffmpeg-formats.html#Metadata-1

 {{{
 7. ... If the timebase is missing then start/end times are assumed to be
 in milliseconds.
 }}}

 The documentation should say nanosecond, or ffmpeg is not reading this
 information correctly.


 How to reproduce:

 Test movie file:
 ​https://archive.org/download/mov-bbb/mov_bbb.mp4

 In this example, I am not specifying the TIMEBASE, because the
 documentation says that if this information is not present, ffmpeg will
 consider times as miliseconds int.

 I want a chapter at 1 sec and at 2 sec. Milisecond is a thousandth of a
 second.
 (https://en.wikipedia.org/wiki/Millisecond).

 1 * 1.000 = 1000
 2 * 1.000 = 2000

 Considering the following is the content of "chapters.txt":
 {{{
 ;FFMETADATA1

 [CHAPTER]
 START=1000
 END=2000
 title=First chapter

 [CHAPTER]
 START=2000
 END=4000
 title=Second chapter  should start at 2 sec
 }}}

 Applying chapters:
 {{{
 ffmpeg -i mov_bbb.mp4 -i chapters.txt -map_chapters 1 -c:a copy -c:v copy
 mov_bbb_with_chapters.mp4
 }}}

 {{{
 ffmpeg version N-90883-g29fd44adf1 Copyright (c) 2000-2018 the FFmpeg
 developers
   built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
   configuration: --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm
 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-
 libsoxr --enable-libspeex --enable-libtheora --enable-libvo-amrwbenc
 --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264
 --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-version3
   libavutil      56. 17.100 / 56. 17.100
   libavcodec     58. 19.100 / 58. 19.100
   libavformat    58. 13.100 / 58. 13.100
   libavdevice    58.  4.100 / 58.  4.100
   libavfilter     7. 20.100 /  7. 20.100
   libswscale      5.  2.100 /  5.  2.100
   libswresample   3.  2.100 /  3.  2.100
   libpostproc    55.  2.100 / 55.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mov_bbb.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42isomavc1
     creation_time   : 2012-03-13T08:58:06.000000Z
     encoder         : HandBrake 0.9.6 2012022800
   Duration: 00:00:10.03, start: 0.000000, bitrate: 629 kb/s
     Chapter #0:0: start 0.000000, end 10.000000
     Metadata:
       title           : Chapter 1
     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
 smpte170m/smpte170m/bt709), 320x176, 300 kb/s, 25 fps, 25 tbr, 90k tbn,
 180k tbc (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
       encoder         : JVT/AVC Coding
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
     Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
     Stream #0:3(und): Data: bin_data (text / 0x74786574), 0 kb/s
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
 Input #1, ffmetadata, from 'chapters.txt':
   Duration: 00:00:00.00, start: 0.000000, bitrate: 280000 kb/s
     Chapter #1:0: start 0.000001, end 0.000002
     Metadata:
       title           : First chapter
     Chapter #1:1: start 0.000002, end 0.000004
     Metadata:
       title           : Second chapter  should start at 2 sec
 Output #0, mp4, to 'mov_bbb_with_chapters.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42isomavc1
     encoder         : Lavf58.13.100
     Chapter #0:0: start 0.000001, end 0.000002
     Metadata:
       title           : First chapter
     Chapter #0:1: start 0.000002, end 0.000004
     Metadata:
       title           : Second chapter  should start at 2 sec
     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
 smpte170m/smpte170m/bt709), 320x176, q=2-31, 300 kb/s, 25 fps, 25 tbr, 90k
 tbn, 90k tbc (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
       encoder         : JVT/AVC Coding
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 frame=  250 fps=0.0 q=-1.0 Lsize=     573kB time=00:00:10.00 bitrate=
 469.0kbits/s speed= 430x
 video:367kB audio:197kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 1.671260%

 }}}

 As shown in output, the chapters are not in the correct place.

 So, I need to convert the times to nanosecond, that is is a thousand-
 millionth of a second.
 (https://en.wikipedia.org/wiki/Nanosecond).

 1 * 1.000.000.000 = 1000000000
 2 * 1.000.000.000 = 2000000000

 Considering the following is the content of "chapters.txt":
 {{{
 ;FFMETADATA1

 [CHAPTER]
 START=1000000000
 END=2000000000
 title=First chapter

 [CHAPTER]
 START=2000000000
 END=4000000000
 title=Second chapter  should start at 2 sec
 }}}

 Applying chapters:
 {{{
 ffmpeg -i mov_bbb.mp4 -i chapters.txt -map_chapters 1 -c:a copy -c:v copy
 mov_bbb_with_chapters.mp4
 }}}

 {{{
 ffmpeg version N-90883-g29fd44adf1 Copyright (c) 2000-2018 the FFmpeg
 developers
   built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
   configuration: --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm
 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-
 libsoxr --enable-libspeex --enable-libtheora --enable-libvo-amrwbenc
 --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264
 --enable-libx265 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-version3
   libavutil      56. 17.100 / 56. 17.100
   libavcodec     58. 19.100 / 58. 19.100
   libavformat    58. 13.100 / 58. 13.100
   libavdevice    58.  4.100 / 58.  4.100
   libavfilter     7. 20.100 /  7. 20.100
   libswscale      5.  2.100 /  5.  2.100
   libswresample   3.  2.100 /  3.  2.100
   libpostproc    55.  2.100 / 55.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'mov_bbb.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42isomavc1
     creation_time   : 2012-03-13T08:58:06.000000Z
     encoder         : HandBrake 0.9.6 2012022800
   Duration: 00:00:10.03, start: 0.000000, bitrate: 629 kb/s
     Chapter #0:0: start 0.000000, end 10.000000
     Metadata:
       title           : Chapter 1
     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
 smpte170m/smpte170m/bt709), 320x176, 300 kb/s, 25 fps, 25 tbr, 90k tbn,
 180k tbc (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
       encoder         : JVT/AVC Coding
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
     Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
     Stream #0:3(und): Data: bin_data (text / 0x74786574), 0 kb/s
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
 Input #1, ffmetadata, from 'chapters.txt':
   Duration: 00:00:04.00, start: 0.000000, bitrate: 0 kb/s
     Chapter #1:0: start 1.000000, end 2.000000
     Metadata:
       title           : First chapter
     Chapter #1:1: start 2.000000, end 4.000000
     Metadata:
       title           : Second chapter  should start at 2 sec
 Output #0, mp4, to 'mov_bbb_with_chapters.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: mp42isomavc1
     encoder         : Lavf58.13.100
     Chapter #0:0: start 1.000000, end 2.000000
     Metadata:
       title           : First chapter
     Chapter #0:1: start 2.000000, end 4.000000
     Metadata:
       title           : Second chapter  should start at 2 sec
     Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv,
 smpte170m/smpte170m/bt709), 320x176, q=2-31, 300 kb/s, 25 fps, 25 tbr, 90k
 tbn, 90k tbc (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
       encoder         : JVT/AVC Coding
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz,
 stereo, fltp, 160 kb/s (default)
     Metadata:
       creation_time   : 2012-03-13T08:58:06.000000Z
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 frame=  250 fps=0.0 q=-1.0 Lsize=     573kB time=00:00:10.00 bitrate=
 469.0kbits/s speed= 635x
 video:367kB audio:197kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 1.671260%
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/7184>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list