¿Exprimiendo 4K + fuera de H.264?

1

Estoy usando FFMpeg para generar videos de lapso de tiempo H.264 sin pérdida de percepción a partir de imágenes fijas, donde "sin pérdida" significa que estoy preservando la resolución de 5184 x 3456 de las fotos originales al tiempo que obtengo los beneficios de la compresión entre cuadros para un archivo eficiente.

Se supone que H.264 no admite 5184 x 3456, pero cuando elijo 4.2.0 (apropiado para mis imágenes comprimidas JPEG 7D de Canon, creo) parece funcionar, excepto por un par de cosas:

  1. Estoy recibiendo advertencias que no entiendo completamente
  2. A algunos jugadores / NLM no les gusta el video resultante

Mis NLM preferidos (por ejemplo, DaVinci Resolve) se atascan cuando se reproducen los clips, pero por lo demás funcionan, lo que plantea la pregunta: ¿Puedo ignorar estas advertencias y continuar? O, ¿descubriré algunos años más adelante que mis clips de timelapse son defectuosos y ya no se pueden usar? ¿Quizás debería usar un códec diferente (por ejemplo, H.265)?

Aquí está el comando que estoy usando:

ffmpeg -framerate 24 -start_number 142 -i IMG_%04d.JPG -c:v libx264 -preset veryslow -crf 18 -pix_fmt yuv420p output.mp4

Y aquí está la salida:

ffmpeg version N-86482-gbc40674 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 7.1.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
  libavutil      55. 66.100 / 55. 66.100
  libavcodec     57. 99.100 / 57. 99.100
  libavformat    57. 73.100 / 57. 73.100
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 92.100 /  6. 92.100
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
Input #0, image2, from 'IMG_%04d.JPG':
  Duration: 00:00:36.83, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 5184x3456, 24 tbr, 24 tbn, 24 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[swscaler @ 00000000026245e0] deprecated pixel format used, make sure you did set range correctly
[libx264 @ 0000000000729ae0] frame MB size (324x216) > level limit (36864)
[libx264 @ 0000000000729ae0] DPB size (16 frames, 1119744 mbs) > level limit (2 frames, 184320 mbs)
[libx264 @ 0000000000729ae0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0000000000729ae0] profile High, level 5.2
[libx264 @ 0000000000729ae0] 264 - core 150 r2833 df79067 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=16 deblock=1:0:0 analyse=0x3:0x133 me=umh subme=10 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=24 chroma_me=1 trellis=2 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=8 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=60 rc=crf mbtree=1 crf=18.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'recording_studio_construction_20121031_5609.mp4':
  Metadata:
    encoder         : Lavf57.73.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 5184x3456, q=-1--1, 24 fps, 12288 tbn, 24 tbc
    Metadata:
      encoder         : Lavc57.99.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
frame=  884 fps=0.5 q=-1.0 Lsize=  253252kB time=00:00:36.70 bitrate=56516.8kbits/s speed=0.0214x     x
video:253240kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.004778%
[libx264 @ 0000000000729ae0] frame I:4     Avg QP:15.60  size:1304736
[libx264 @ 0000000000729ae0] frame P:178   Avg QP:17.96  size:430397
[libx264 @ 0000000000729ae0] frame B:702   Avg QP:18.48  size:252831
[libx264 @ 0000000000729ae0] consecutive B-frames:  2.6%  2.9%  5.1% 10.0% 19.8% 19.0% 11.9% 22.6%  6.1%
[libx264 @ 0000000000729ae0] mb I  I16..4:  7.5% 86.8%  5.7%
[libx264 @ 0000000000729ae0] mb P  I16..4:  2.1%  4.3%  0.4%  P16..4: 64.4% 13.2% 11.8%  0.0%  0.0%    skip: 3.9%
[libx264 @ 0000000000729ae0] mb B  I16..4:  0.2%  0.5%  0.0%  B16..8: 46.9% 11.4%  1.5%  direct:12.2%  skip:27.3%  L0:62.1% L1:36.0% BI: 1.9%
[libx264 @ 0000000000729ae0] 8x8 transform intra:68.7% inter:61.7%
[libx264 @ 0000000000729ae0] direct mvs  spatial:99.0% temporal:1.0%
[libx264 @ 0000000000729ae0] coded y,uvDC,uvAC intra: 69.4% 57.1% 15.4% inter: 29.5% 29.9% 0.1%
[libx264 @ 0000000000729ae0] i16 v,h,dc,p: 25% 20% 11% 44%
[libx264 @ 0000000000729ae0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu:  7%  7%  6% 12% 15% 12% 15% 12% 14%
[libx264 @ 0000000000729ae0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu:  6% 12%  3% 12% 15% 12% 14% 11% 15%
[libx264 @ 0000000000729ae0] i8c dc,h,v,p: 28% 40% 22% 10%
[libx264 @ 0000000000729ae0] Weighted P-Frames: Y:18.0% UV:6.2%
[libx264 @ 0000000000729ae0] ref P L0: 27.0%  4.9% 14.1%  8.7%  7.5%  6.8%  5.9%  3.5%  3.3%  3.1%  2.7%  2.9%  2.7%  2.6%  2.6%  1.8%
[libx264 @ 0000000000729ae0] ref B L0: 30.7% 15.7% 12.0%  7.4%  6.2%  5.5%  4.8%  3.2%  3.0%  2.7%  2.5%  2.3%  2.1%  1.4%  0.4%
[libx264 @ 0000000000729ae0] ref B L1: 85.3% 14.7%
[libx264 @ 0000000000729ae0] kb/s:56322.30

Cualquier consejo es apreciado.

Dave D
fuente

Respuestas:

3

FFmpeg se quejará de que el flujo de bits resultante no cumple con ningún nivel. Puedes ignorar eso ya que ffmpeg, al menos, decodificará su salida. Al igual que otros jugadores de software. Los jugadores de hardware probablemente fallarán.

Gyan
fuente