[FFmpeg-trac] #6577(undetermined:new): mkv vs encoding interlacement mismatch
FFmpeg
trac at avcodec.org
Wed Aug 9 23:38:56 EEST 2017
#6577: mkv vs encoding interlacement mismatch
-------------------------------------+-------------------------------------
Reporter: dericed | Owner:
Type: defect | Status: new
Priority: normal | Component:
Version: git- | undetermined
master | Keywords: matroska
Blocked By: | Blocking:
Reproduced by developer: 0 | Analyzed by developer: 0
-------------------------------------+-------------------------------------
Summary of the bug:
The interlacement data between an encoded ffv1 stream and the mkv
container appear to contradict each other.
How to reproduce:
Created an interlaced ffv1 mkv file.
{{{
ffmpeg -f lavfi -i mandelbrot -vf setfield=tff -vframes 1 -c:v ffv1 -y
test.mkv
ffmpeg version N-48208-gdf884e038f Copyright (c) 2000-2017 the FFmpeg
developers
built with Apple LLVM version 8.1.0 (clang-802.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-df884e0 --enable-
shared --enable-pthreads --enable-gpl --enable-version3 --enable-
hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
ldflags= --enable-ffplay --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libtesseract --enable-libvpx --enable-libx264
--enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 72.100 / 55. 72.100
libavcodec 57.102.100 / 57.102.100
libavformat 57. 76.100 / 57. 76.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 98.100 / 6. 98.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.102 / 4. 7.102
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Input #0, lavfi, from 'mandelbrot':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo (RGB[0] / 0x424752), rgb0, 640x480 [SAR
1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> ffv1 (native))
Press [q] to stop, [?] for help
Output #0, matroska, to 'test.mkv':
Metadata:
encoder : Lavf57.76.100
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), bgr0, 640x480 [SAR 1:1
DAR 4:3], q=2-31, 200 kb/s, 25 fps, 1k tbn, 25 tbc
Metadata:
encoder : Lavc57.102.100 ffv1
frame= 1 fps=0.0 q=-0.0 Lsize= 212kB time=00:00:00.00
bitrate=1739832.0kbits/s speed=0.0198x
video:212kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.362262%
}}}
Check Matroska interlacement in Tracks/Video/FieldOrder with mkvinfo
{{{
mkvinfo test.mkv | grep "Field order"
| + Field order: 9 (bottom field displayed first, top field stored
first)
}}}
Check FFV1 interlacement with ffprobe:
{{{
ffprobe test.mkv -show_entries frame=interlaced_frame,top_field_first
ffprobe version N-48208-gdf884e038f Copyright (c) 2007-2017 the FFmpeg
developers
built with Apple LLVM version 8.1.0 (clang-802.0.38)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-df884e0 --enable-
shared --enable-pthreads --enable-gpl --enable-version3 --enable-
hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-
ldflags= --enable-ffplay --enable-libfreetype --enable-libmp3lame
--enable-libopus --enable-libtesseract --enable-libvpx --enable-libx264
--enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 72.100 / 55. 72.100
libavcodec 57.102.100 / 57.102.100
libavformat 57. 76.100 / 57. 76.100
libavdevice 57. 7.100 / 57. 7.100
libavfilter 6. 98.100 / 6. 98.100
libavresample 3. 6. 0 / 3. 6. 0
libswscale 4. 7.102 / 4. 7.102
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
Input #0, matroska,webm, from 'test.mkv':
Metadata:
ENCODER : Lavf57.76.100
Duration: 00:00:00.04, start: 0.000000, bitrate: 43495 kb/s
Stream #0:0: Video: ffv1 (FFV1 / 0x31564646), bgr0(top coded first
(swapped)), 640x480, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc
(default)
Metadata:
ENCODER : Lavc57.102.100 ffv1
DURATION : 00:00:00.040000000
[FRAME]
interlaced_frame=1
top_field_first=1
[/FRAME]
}}}
The Matroska seems to say `bottom field displayed first, top field stored
first`
FFV1 seems to say `top_field_first=1` which IIUC means `top field
displayed first`. Am I understanding this wrong or is ffmpeg writing the
wrong value in Matroska here?
Patches should be submitted to the ffmpeg-devel mailing list and not this
bug tracker.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6577>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list