[FFmpeg-user] setfield and display order and storage order

dave at dericed.com dave at dericed.com
Mon Nov 28 21:48:33 EET 2016


Hi all,
I'm trying to use the setfield filter to get an output that is stored and display as top field first. However the output of setfield with bff and tff always seems to have a conflict between storage and display.

For examples, using mandelbrot, tinterlace, and setfield to make a tff output.

ffmpeg -f lavfi -i  mandelbrot=s=720x288:r=50/1 -vf tinterlace=merge,setfield=tff -t 1 -c:v v210 -y interlaced.mov
ffmpeg version N-43913-g801b5c1 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-801b5c1 --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-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
  libavutil      55. 41.101 / 55. 41.101
  libavcodec     57. 66.108 / 57. 66.108
  libavformat    57. 58.101 / 57. 58.101
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.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=s=720x288:r=50/1':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (RGB[0] / 0x424752), rgb0, 720x288 [SAR 1:1 DAR 5:2], 50 tbr, 50 tbn, 50 tbc
Output #0, mov, to 'interlaced.mov':
  Metadata:
    encoder         : Lavf57.58.101
    Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p, 720x576 [SAR 2:1 DAR 5:2], q=2-31, 200 kb/s, 25 fps, 12800 tbn, 25 tbc
    Metadata:
      encoder         : Lavc57.66.108 v210
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> v210 (native))
Press [q] to stop, [?] for help
frame=   25 fps=0.0 q=-0.0 Lsize=   27001kB time=00:00:00.96 bitrate=230388.8kbits/s speed=2.49x    
video:27000kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.003277%

But the output is:

ffmpeg -i interlaced.mov 
ffmpeg version N-43913-g801b5c1 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-801b5c1 --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-libx264 --enable-libxvid --enable-opencl --disable-lzma --enable-vda
  libavutil      55. 41.101 / 55. 41.101
  libavcodec     57. 66.108 / 57. 66.108
  libavformat    57. 58.101 / 57. 58.101
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.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 'interlaced.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf57.58.101
  Duration: 00:00:01.00, start: 0.000000, bitrate: 221191 kb/s
    Stream #0:0(eng): Video: v210 (v210 / 0x30313276), yuv422p10le(top coded first (swapped)), 720x576, 221184 kb/s, SAR 2:1 DAR 5:2, 25 fps, 25 tbr, 12800 tbn, 12800 tbc (default)
    Metadata:
      handler_name    : DataHandler
      encoder         : Lavc57.66.108 v210
At least one output file must be specified

So the result is "top coded first (swapped)" aka "AV_FIELD_TB". Is this expected and is it possible to use the setfield filter (or another filter or argument) to get an output with AV_FIELD_TT? I get the same issue with mkv.

Best Regards,
Dave Rice



More information about the ffmpeg-user mailing list