[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