Opened 10 years ago
Last modified 9 years ago
#6025 new defect
prores encoder does not write interlacement data in the stream
| Reported by: | dave rice | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | unspecified | Keywords: | prores |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | no | |
| Analyzed by developer: | no |
Description
The 'prores' encoder does not set the interlacement (though the 'prores_ks' encoder does).
Here is a sample created with 'prores_ks' called prores_ks.mov.
ffmpeg -f lavfi -i mandelbrot=r=1 -t 1 -c:v prores_ks -vf setfield=tff -field_order tt -flags +ildct+ilme -y prores_ks.mov
ffmpeg version N-44102-g457e933 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 43.100 / 55. 43.100
libavcodec 57. 68.100 / 57. 68.100
libavformat 57. 60.100 / 57. 60.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 68.100 / 6. 68.100
libavresample 3. 2. 0 / 3. 2. 0
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, lavfi, from 'mandelbrot=r=1':
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], 1 fps, 1 tbr, 1 tbn, 1 tbc
[prores_ks @ 0x7fbf5c825600] Autoselected 4:4:4:4 profile because of the used input colorspace. It can be overridden through -profile option.
Output #0, mov, to 'prores_ks.mov':
Metadata:
encoder : Lavf57.60.100
Stream #0:0: Video: prores (prores_ks) (ap4h / 0x68347061), yuv444p10le(top first), 640x480 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1 fps, 16384 tbn, 1 tbc
Metadata:
encoder : Lavc57.68.100 prores_ks
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> prores (prores_ks))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=-0.0 Lsize= 256kB time=00:00:00.00 bitrate=34329180.3kbits/s speed=0.00173x
video:255kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.284272%
prores_ks.mov shows that it is TFF as requested with interlaced_frame=1 and top_field_first=1.
ffprobe -i prores_ks.mov -show_entries frame=interlaced_frame,top_field_first
ffprobe version N-44102-g457e933 Copyright (c) 2007-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 43.100 / 55. 43.100
libavcodec 57. 68.100 / 57. 68.100
libavformat 57. 60.100 / 57. 60.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 68.100 / 6. 68.100
libavresample 3. 2. 0 / 3. 2. 0
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'prores_ks.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf57.60.100
Duration: 00:00:01.00, start: 0.000000, bitrate: 2094 kb/s
Stream #0:0(eng): Video: prores (ap4h / 0x68347061), yuv444p10le(top first), 640x480, 2088 kb/s, SAR 1:1 DAR 4:3, 1 fps, 1 tbr, 16384 tbn, 16384 tbc (default)
Metadata:
handler_name : DataHandler
encoder : Lavc57.68.100 prores_ks
[FRAME]
interlaced_frame=1
top_field_first=1
[/FRAME]
However the 'prores' encoder does not set the interlacement data in the stream. This creates prores.mov with the same settings except with the prores (rather than prores_ks) encoder.
ffmpeg -f lavfi -i mandelbrot=r=1 -t 1 -c:v prores -vf setfield=tff -field_order tt -flags +ildct+ilme -y prores.mov
ffmpeg version N-44102-g457e933 Copyright (c) 2000-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 43.100 / 55. 43.100
libavcodec 57. 68.100 / 57. 68.100
libavformat 57. 60.100 / 57. 60.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 68.100 / 6. 68.100
libavresample 3. 2. 0 / 3. 2. 0
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, lavfi, from 'mandelbrot=r=1':
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], 1 fps, 1 tbr, 1 tbn, 1 tbc
[prores @ 0x7fd6a8803e00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8837200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8839a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a883c200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a883ea00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8841200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8843a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8846200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8848a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a884b200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a884da00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8850200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8852a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8855200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8857a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a885a200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a885ca00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a885f200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8861a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8864200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8866a00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a8869200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a886ba00] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6a886e200] encoding with ProRes standard (apcn) profile
[prores @ 0x7fd6aa001800] encoding with ProRes standard (apcn) profile
Output #0, mov, to 'prores.mov':
Metadata:
encoder : Lavf57.60.100
Stream #0:0: Video: prores (apcn / 0x6E637061), yuv422p10le(top first), 640x480 [SAR 1:1 DAR 4:3], q=2-31, 200 kb/s, 1 fps, 16384 tbn, 1 tbc
Metadata:
encoder : Lavc57.68.100 prores
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> prores (native))
Press [q] to stop, [?] for help
frame= 1 fps=0.0 q=-0.0 Lsize= 107kB time=00:00:00.00 bitrate=14404196.7kbits/s speed=0.00253x
video:107kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.680172%
The resulting prores.mov is considered as interlaced_frame=0 and top_field_first=0.
ffprobe -i prores.mov -show_entries frame=interlaced_frame,top_field_first
ffprobe version N-44102-g457e933 Copyright (c) 2007-2016 the FFmpeg developers
built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD-457e933 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-chromaprint --enable-ffplay --enable-libfreetype --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
libavutil 55. 43.100 / 55. 43.100
libavcodec 57. 68.100 / 57. 68.100
libavformat 57. 60.100 / 57. 60.100
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 68.100 / 6. 68.100
libavresample 3. 2. 0 / 3. 2. 0
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'prores.mov':
Metadata:
major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf57.60.100
Duration: 00:00:01.00, start: 0.000000, bitrate: 878 kb/s
Stream #0:0(eng): Video: prores (apcn / 0x6E637061), yuv422p10le(top first), 640x480, 872 kb/s, SAR 1:1 DAR 4:3, 1 fps, 1 tbr, 16384 tbn, 16384 tbc (default)
Metadata:
handler_name : DataHandler
encoder : Lavc57.68.100 prores
[FRAME]
interlaced_frame=0
top_field_first=0
[/FRAME]
Should note that both samples have the 'fiel' atom in QuickTime set correctly to TFF, but the discrepancy in the encoding for prores.mov causes issues when the resulting files are handled in Final Cut software.



Prores will be replaced with prores_ks.