[FFmpeg-trac] #1534(undetermined:new): report on ffv1 version and slices

FFmpeg trac at avcodec.org
Sat Jul 14 13:55:08 CEST 2012


#1534: report on ffv1 version and slices
-------------------------------------+-------------------------------------
             Reporter:  dericed      |                     Type:
               Status:  new          |  enhancement
            Component:               |                 Priority:  normal
  undetermined                       |                  Version:
             Keywords:               |  unspecified
             Blocking:               |               Blocked By:
Analyzed by developer:  0            |  Reproduced by developer:  0
-------------------------------------+-------------------------------------
 Summary of the bug:

 Since ffv1 version 3 may someday become the default there should be a way
 to identify whether an ffv1 encoding is version 1, or 3 (or 0). Currently
 the version isn't reported either during encoding or with ffprobe
 -show_streams.

 How to reproduce:

 Produce ffv1 encodings with version 1 and version 3.
 Version 1:

 {{{
 ffmpeg started on 2012-07-14 at 07:46:55
 Report written to "ffmpeg-20120714-074655.log"
 Command line:
 ffmpeg -report -f lavfi -t 1 -i testsrc -c:v ffv1 ffv1_v1.mov
 ffmpeg version 0.11.1.git Copyright (c) 2000-2012 the FFmpeg developers
   built on Jul 13 2012 22:09:29 with gcc 4.2.1 (Apple Inc. build 5666)
 (dot 3)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables
 --enable-libfreetype --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-
 libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --enable-
 libopenjpeg
   libavutil      51. 64.100 / 51. 64.100
   libavcodec     54. 37.100 / 54. 37.100
   libavformat    54. 16.104 / 54. 16.104
   libavdevice    54.  1.100 / 54.  1.100
   libavfilter     3.  2.100 /  3.  2.100
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0. 15.100 /  0. 15.100
   libpostproc    52.  0.100 / 52.  0.100
 [Parsed_testsrc_0 @ 0x7f8893c184a0] size:320x240 rate:25/1
 duration:-1.000000 sar:1/1
 [lavfi @ 0x7f889404e200] All info found
 [lavfi @ 0x7f889404e200] Estimating duration from bitrate, this may be
 inaccurate
 Input #0, lavfi, from 'testsrc':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0, 1, 1/25: Video: rawvideo (RGB[24] / 0x18424752), rgb24,
 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
 -t is not an input option, keeping it for the next output; consider fixing
 your command line.
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'video_size' to value
 '320x240'
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'pix_fmt' to value '2'
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'time_base' to value
 '1/25'
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'pixel_aspect' to value
 '1/1'
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'sws_param' to value
 'flags=2'
 [buffer @ 0x7f8893c19aa0] Setting entry with key 'frame_rate' to value
 '25/1'
 [graph 0 input from stream 0:0 @ 0x7f8893c19b60] w:320 h:240 pixfmt:rgb24
 tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
 [format @ 0x7f8893c1a1e0] auto-inserting filter 'auto-inserted scaler 0'
 between the filter 'Parsed_null_0' and the filter 'format'
 [auto-inserted scaler 0 @ 0x7f8893c1a540] w:320 h:240 fmt:rgb24 sar:1/1 ->
 w:320 h:240 fmt:bgr0 sar:1/1 flags:0x4
 [ffv1 @ 0x7f8894054400] detected 2 logical cores
 [mov @ 0x7f8894055000] Using MS style video codec tag, the file may be
 unplayable!
 Output #0, mov, to 'ffv1_v1.mov':
   Metadata:
     encoder         : Lavf54.16.104
     Stream #0:0, 0, 1/25: Video: ffv1, bgr0, 320x240 [SAR 1:1 DAR 4:3],
 q=2-31, 200 kb/s, 25 tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo -> ffv1)
 Press [q] to stop, [?] for help
 No more output streams to write to, finishing.
 frame=   25 fps=0.0 q=0.0 Lsize=     106kB time=00:00:01.00 bitrate=
 870.9kbits/s
 video:105kB audio:0kB subtitle:0 global headers:0kB muxing overhead
 0.781373%
 }}}

 Version 3:
 {{{
 ffmpeg started on 2012-07-14 at 07:46:42
 Report written to "ffmpeg-20120714-074642.log"
 Command line:
 ffmpeg -report -f lavfi -t 1 -i testsrc -c:v ffv1 -level 3 -strict
 experimental ffv1_v3.mov
 ffmpeg version 0.11.1.git Copyright (c) 2000-2012 the FFmpeg developers
   built on Jul 13 2012 22:09:29 with gcc 4.2.1 (Apple Inc. build 5666)
 (dot 3)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables
 --enable-libfreetype --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-
 libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --enable-
 libopenjpeg
   libavutil      51. 64.100 / 51. 64.100
   libavcodec     54. 37.100 / 54. 37.100
   libavformat    54. 16.104 / 54. 16.104
   libavdevice    54.  1.100 / 54.  1.100
   libavfilter     3.  2.100 /  3.  2.100
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0. 15.100 /  0. 15.100
   libpostproc    52.  0.100 / 52.  0.100
 [Parsed_testsrc_0 @ 0x7fcf41c18520] size:320x240 rate:25/1
 duration:-1.000000 sar:1/1
 [lavfi @ 0x7fcf4204e200] All info found
 [lavfi @ 0x7fcf4204e200] Estimating duration from bitrate, this may be
 inaccurate
 Input #0, lavfi, from 'testsrc':
   Duration: N/A, start: 0.000000, bitrate: N/A
     Stream #0:0, 1, 1/25: Video: rawvideo (RGB[24] / 0x18424752), rgb24,
 320x240 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
 -t is not an input option, keeping it for the next output; consider fixing
 your command line.
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'video_size' to value
 '320x240'
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'pix_fmt' to value '2'
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'time_base' to value
 '1/25'
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'pixel_aspect' to value
 '1/1'
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'sws_param' to value
 'flags=2'
 [buffer @ 0x7fcf41c19c00] Setting entry with key 'frame_rate' to value
 '25/1'
 [graph 0 input from stream 0:0 @ 0x7fcf41c19cc0] w:320 h:240 pixfmt:rgb24
 tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
 [format @ 0x7fcf41c1a360] auto-inserting filter 'auto-inserted scaler 0'
 between the filter 'Parsed_null_0' and the filter 'format'
 [auto-inserted scaler 0 @ 0x7fcf41c1a6a0] w:320 h:240 fmt:rgb24 sar:1/1 ->
 w:320 h:240 fmt:bgr0 sar:1/1 flags:0x4
 [ffv1 @ 0x7fcf42054400] detected 2 logical cores
 [mov @ 0x7fcf42055000] Using MS style video codec tag, the file may be
 unplayable!
 Output #0, mov, to 'ffv1_v3.mov':
   Metadata:
     encoder         : Lavf54.16.104
     Stream #0:0, 0, 1/25: Video: ffv1, bgr0, 320x240 [SAR 1:1 DAR 4:3],
 q=2-31, 200 kb/s, 25 tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (rawvideo -> ffv1)
 Press [q] to stop, [?] for help
 No more output streams to write to, finishing.
 frame=   25 fps=0.0 q=0.0 Lsize=     123kB time=00:00:01.00
 bitrate=1006.9kbits/s
 video:122kB audio:0kB subtitle:0 global headers:0kB muxing overhead
 0.681518%

 }}}

 FFprobe -show_streams on version 1:

 {{{
 ffprobe ffv1_v1.mov -show_streams
 ffprobe version 0.11.1.git Copyright (c) 2007-2012 the FFmpeg developers
   built on Jul 13 2012 22:09:29 with gcc 4.2.1 (Apple Inc. build 5666)
 (dot 3)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables
 --enable-libfreetype --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-
 libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --enable-
 libopenjpeg
   libavutil      51. 64.100 / 51. 64.100
   libavcodec     54. 37.100 / 54. 37.100
   libavformat    54. 16.104 / 54. 16.104
   libavdevice    54.  1.100 / 54.  1.100
   libavfilter     3.  2.100 /  3.  2.100
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0. 15.100 /  0. 15.100
   libpostproc    52.  0.100 / 52.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'ffv1_v1.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf54.16.104
   Duration: 00:00:01.00, start: 0.000000, bitrate: 870 kb/s
     Stream #0:0(eng): Video: ffv1 (FFV1 / 0x31564646), bgr0, 320x240, 864
 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       handler_name    : DataHandler
 [STREAM]
 index=0
 codec_name=ffv1
 codec_long_name=FFmpeg video codec #1
 profile=unknown
 codec_type=video
 codec_time_base=1/25
 codec_tag_string=FFV1
 codec_tag=0x31564646
 width=320
 height=240
 has_b_frames=0
 sample_aspect_ratio=N/A
 display_aspect_ratio=N/A
 pix_fmt=bgr0
 level=-99
 timecode=N/A
 id=N/A
 r_frame_rate=25/1
 avg_frame_rate=25/1
 time_base=1/25
 start_time=0.000000
 duration=1.000000
 bit_rate=864120
 nb_frames=25
 nb_read_frames=N/A
 nb_read_packets=N/A
 TAG:language=eng
 TAG:handler_name=DataHandler
 [/STREAM]
 }}}

 FFprobe -show_streams on version 3:

 {{{
 ffprobe ffv1_v3.mov -show_streams
 ffprobe version 0.11.1.git Copyright (c) 2007-2012 the FFmpeg developers
   built on Jul 13 2012 22:09:29 with gcc 4.2.1 (Apple Inc. build 5666)
 (dot 3)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables
 --enable-libfreetype --cc=/usr/bin/gcc-4.2 --enable-libx264 --enable-
 libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-
 libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --enable-
 libopenjpeg
   libavutil      51. 64.100 / 51. 64.100
   libavcodec     54. 37.100 / 54. 37.100
   libavformat    54. 16.104 / 54. 16.104
   libavdevice    54.  1.100 / 54.  1.100
   libavfilter     3.  2.100 /  3.  2.100
   libswscale      2.  1.100 /  2.  1.100
   libswresample   0. 15.100 /  0. 15.100
   libpostproc    52.  0.100 / 52.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'ffv1_v3.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 512
     compatible_brands: qt
     encoder         : Lavf54.16.104
   Duration: 00:00:01.00, start: 0.000000, bitrate: 1006 kb/s
     Stream #0:0(eng): Video: ffv1 (FFV1 / 0x31564646), bgr0, 320x240, 999
 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
     Metadata:
       handler_name    : DataHandler
 [STREAM]
 index=0
 codec_name=ffv1
 codec_long_name=FFmpeg video codec #1
 profile=unknown
 codec_type=video
 codec_time_base=1/25
 codec_tag_string=FFV1
 codec_tag=0x31564646
 width=320
 height=240
 has_b_frames=0
 sample_aspect_ratio=N/A
 display_aspect_ratio=N/A
 pix_fmt=bgr0
 level=-99
 timecode=N/A
 id=N/A
 r_frame_rate=25/1
 avg_frame_rate=25/1
 time_base=1/25
 start_time=0.000000
 duration=1.000000
 bit_rate=999800
 nb_frames=25
 nb_read_frames=N/A
 nb_read_packets=N/A
 TAG:language=eng
 TAG:handler_name=DataHandler
 [/STREAM]

 }}}

 There's no method to identify what version a given ffv1 encoding was made
 with.

 The specifications for the ffv1 header are here:
 http://ffmpeg.org/~michael/ffv1.html#toc-Subsection-4.3.

 If version >1 it may be useful to report the minor_version as well. At the
 moment I can't think of a reason to need to report things like coder_type
 and number of slices but it may be nice.

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


More information about the FFmpeg-trac mailing list