使用 FFmpeg 和 x264 转换 EXR 文件序列

使用 FFmpeg 和 x264 转换 EXR 文件序列

当我使用 FFmpeg 和 x264 编解码器将 EXR 序列转换为 QuickTime MOV 文件时,它会对视频进行编码 - 但在 QuickTime Player 和 Windows Media Player 中它只是黑色!

但是当我用 VLC 打开它时,我可以看到图像,它看起来不错。当我用 JPG 序列而不是 EXR 尝试同样的事情时,它完美地工作了!有人知道那是什么吗?

这是我的 FFmpeg 代码:

ffmpeg -y -i C:/seq_v001.%04d.exr -c:v libx264 -preset slow -crf 17 C:/out.mov

以下是控制台输出:

ffmpeg version N-47062-g26c531c Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov 25 2012 12:25:21 with gcc 4.7.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-pthreads --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libutvideo --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
  libavutil      52.  9.100 / 52.  9.100
  libavcodec     54. 77.100 / 54. 77.100
  libavformat    54. 37.100 / 54. 37.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 23.102 /  3. 23.102
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 17.101 /  0. 17.101
  libpostproc    52.  2.100 / 52.  2.100
[image2 @ 000000000025e4c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, image2, from 'C:/seq_v001.%04d.exr':
  Duration: 00:00:04.00, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: exr, rgb48le, 1920x1080 [SAR 1:1 DAR 16:9], 25 tbr, 25 tbn, 25 tbc
[libx264 @ 0000000001fd0ea0] using SAR=1/1
[libx264 @ 0000000001fd0ea0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2
[libx264 @ 0000000001fd0ea0] profile High 4:4:4 Predictive, level 5.0, 4:4:4 8-bit
[libx264 @ 0000000001fd0ea0] 264 - core 128 r2216 198a7ea - H.264/MPEG-4 AVC codec - Copyleft 2003-2012 - http://www.videolan.org/x264.html - options: cabac=1 ref=5 deblock=1:0:0 analyse=0x3:0x113 me=umh subme=8 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=4 threads=18 lookahead_threads=3 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=2 b_bias=0 direct=3 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=50 rc=crf mbtree=1 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to 'C:/out.mov':
  Metadata:
    encoder         : Lavf54.37.100
    Stream #0:0: Video: h264 (avc1 / 0x31637661), yuv444p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 12800 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (exr -> libx264)
Press [q] to stop, [?] for help
[exr @ 0000000001fddea0] Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
[exr @ 0000000001fdeb80] Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
frame=    7 fps=0.0 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
[exr @ 0000000001fe0560] Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
[exr @ 0000000001fe0e00] Found more than one compression attribute
[exr @ 0000000001fddea0] Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
frame=   17 fps= 16 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdeb80] Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
[exr @ 0000000001fe0560] Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
[exr @ 0000000001fe0e00] Found more than one compression attribute
[exr @ 0000000001fddea0] Found more than one compression attribute
frame=   28 fps= 18 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
[exr @ 0000000001fdeb80] Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
[exr @ 0000000001fe0560] Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
frame=   39 fps= 19 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fddea0] Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
[exr @ 0000000001fdeb80] Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
frame=   50 fps= 19 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
[exr @ 0000000001fe0e00] Found more than one compression attribute
[exr @ 0000000001fddea0] Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
frame=   57 fps= 16 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
[exr @ 0000000001fe0560] Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
[exr @ 0000000001fe0e00] Found more than one compression attribute
frame=   66 fps= 17 q=0.0 size=       0kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
[exr @ 0000000001fdeb80] Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
frame=   74 fps= 16 q=22.0 size=     255kB time=00:00:00.00 bitrate=   0.0kbits/s    
Found more than one compression attribute
[exr @ 0000000001fe0120] Found more than one compression attribute
[exr @ 0000000001fe0560] Found more than one compression attribute
[exr @ 0000000001fe09c0] Found more than one compression attribute
[exr @ 0000000001fe0e00] Found more than one compression attribute
frame=   79 fps= 16 q=22.0 size=     467kB time=00:00:00.20 bitrate=19134.5kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdda40] Found more than one compression attribute
[exr @ 0000000001fde2e0] Found more than one compression attribute
[exr @ 0000000001fde740] Found more than one compression attribute
frame=   83 fps= 15 q=22.0 size=     652kB time=00:00:00.36 bitrate=14829.5kbits/s    
Found more than one compression attribute
[exr @ 0000000001fdefe0] Found more than one compression attribute
[exr @ 0000000001fdf420] Found more than one compression attribute
[exr @ 0000000001fdf880] Found more than one compression attribute
[exr @ 0000000001fdfcc0] Found more than one compression attribute
frame=  100 fps= 15 q=22.0 size=    1505kB time=-577014:-32:-22.-77 bitrate=  -0.0kbits/s    
frame=  100 fps=9.6 q=-1.0 Lsize=    3831kB time=00:00:03.92 bitrate=8006.7kbits/s    

video:3829kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.050698%
[libx264 @ 0000000001fd0ea0] frame I:1     Avg QP:18.35  size:168478
[libx264 @ 0000000001fd0ea0] frame P:31    Avg QP:16.10  size: 83540
[libx264 @ 0000000001fd0ea0] frame B:68    Avg QP:20.34  size: 17093
[libx264 @ 0000000001fd0ea0] consecutive B-frames:  7.0%  4.0%  9.0% 80.0%
[libx264 @ 0000000001fd0ea0] mb I  I16..4: 22.6% 67.9%  9.4%
[libx264 @ 0000000001fd0ea0] mb P  I16..4:  1.3%  7.3%  0.6%  P16..4: 20.3% 10.1%  5.7%  0.0%  0.0%    skip:54.6%
[libx264 @ 0000000001fd0ea0] mb B  I16..4:  0.2%  0.8%  0.1%  B16..8: 30.8%  4.8%  1.2%  direct: 1.5%  skip:60.6%  L0:46.0% L1:48.6% BI: 5.4%
[libx264 @ 0000000001fd0ea0] 8x8 transform intra:76.0% inter:78.8%
[libx264 @ 0000000001fd0ea0] direct mvs  spatial:85.3% temporal:14.7%
[libx264 @ 0000000001fd0ea0] coded y,u,v intra: 87.8% 56.3% 53.3% inter: 13.0% 6.1% 5.0%
[libx264 @ 0000000001fd0ea0] i16 v,h,dc,p: 12%  9% 24% 55%
[libx264 @ 0000000001fd0ea0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 10%  8% 32%  7% 11%  8%  9%  7%  9%
[libx264 @ 0000000001fd0ea0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12%  8%  5%  8% 23% 14% 11%  9% 11%
[libx264 @ 0000000001fd0ea0] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0000000001fd0ea0] ref P L0: 40.6%  9.5% 25.3% 13.3%  9.3%  2.1%
[libx264 @ 0000000001fd0ea0] ref B L0: 64.9% 24.5%  8.7%  1.9%
[libx264 @ 0000000001fd0ea0] ref B L1: 89.8% 10.2%
[libx264 @ 0000000001fd0ea0] kb/s:7841.10

答案1

你正在使用 YUV 4:4:4 颜色空间转换视频。这实际上不是标准——大多数(某些?)播放器只支持色度二次采样YUV 4:2:0 planar,包括 Windows Media Player 和 QuickTime。

您的 JPEG 图像通常会使用 YUV 4:2:0 子采样(yuvj420p),因此 FFmpeg 将默认生成兼容的视频。

尝试使用以下方法对视频进行编码-pix_fmt yuv420p

ffmpeg -y -i C:/seq_v001.%04d.exr -c:v libx264 -pix_fmt yuv420p -preset slow -crf 17 C:/out.mov

与非子采样版本相比,您可能不会注意到任何巨大的质量损失——眼睛对颜色信息的敏感度不如对空间信息的敏感度。

相关内容