video encoding - Convert EXR file sequence with FFmpeg and x264
2013-08
When I convert an EXR sequence into a QuickTime MOV file using FFmpeg and the x264 codec, it codes the video – but in QuickTime Player and Windows Media Player it's just black!
But when I open it up with VLC I can see the image and it looks fine. When I try the same thing with a JPG sequence instead of EXR it works perfectly! Does anyone have an idea what that could be?
Here is my FFmpeg code:
ffmpeg -y -i C:/seq_v001.%04d.exr -c:v libx264 -preset slow -crf 17 C:/out.mov
Here is the console output:
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
You're converting video using the YUV 4:4:4 color space. This is not really standard – most (some?) players will only support the chroma-subsampled YUV 4:2:0 planar, including Windows Media Player and QuickTime.
Your JPEG images will typically use YUV 4:2:0 subsampling (yuvj420p
), so FFmpeg will produce compatible video by default.
Try encoding the video with -pix_fmt yuv420p
instead:
ffmpeg -y -i C:/seq_v001.%04d.exr -c:v libx264 -pix_fmt yuv420p -preset slow -crf 17 C:/out.mov
You probably won't notice any huge quality loss compared to the non-subsampled version – the eye isn't as sensitive to color information as it is to spatial information.
Im using the following command, which works for most files, except what seems to be xvid encoded ones
/usr/bin/ffmpeg -sameq -i file.avi -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.avi
So this should basically splice out 30 seconds of video + audio, starting from 1 minute mark.
It does START encoding at the 00:01:00 mark but it goes all the way to the end of the file for some reason, ignoring that I want just 30 seconds.
The output looks like this.
FFmpeg version git-ecc4bdd, Copyright (c) 2000-2010 the FFmpeg developers
built on May 31 2010 04:52:24 with gcc 4.4.3 20100127 (Red Hat 4.4.3-4)
configuration: --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libopenjpeg --enable-libfaac --enable-libvorbis --enable-gpl --enable-nonfree --enable-libxvid --enable-pthreads --enable-libfaad --extra-cflags=-fPIC --enable-postproc --enable-libtheora --enable-libvorbis --enable-shared
libavutil 50.15. 2 / 50.15. 2
libavcodec 52.67. 0 / 52.67. 0
libavformat 52.62. 0 / 52.62. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.20. 0 / 1.20. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mpeg4 @ 0x17cf770]Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'file.avi':
Metadata:
ISFT : VirtualDubMod 1.5.10.2 (build 2540/release)
Duration: 00:02:00.00, start: 0.000000, bitrate: 1587 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 672x368 [PAR 1:1 DAR 42:23], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
File 'lol6.avi' already exists. Overwrite ? [y/N] y
Output #0, avi, to 'lol6.avi':
Metadata:
ISFT : Lavf52.62.0
Stream #0.0: Video: mpeg4, yuv420p, 672x368 [PAR 1:1 DAR 42:23], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0.1: Audio: mp2, 48000 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[mpeg4 @ 0x17cf770]Invalid and inefficient vfw-avi packed B frames detected
[buffer @ 0x184b610]Buffering several frames is not supported. Please consume all available frames before adding a new one.
frame= 1501 fps=104 q=0.0 Lsize= 15612kB time=30.02 bitrate=4259.7kbits/s ts/s
video:15303kB audio:235kB global headers:0kB muxing overhead 0.482620%
if I convert this file to mp4 for example, and then perform the same action, it works perfectly.
I presume your "convert to MP4" operation is just a container change, not a full re-encode of the A/V data streams. So perhaps FFmpeg is getting hung up on something broken in those AVI containers. This line in your output might support this:
[mpeg4 @ 0x17cf770]Invalid and inefficient vfw-avi packed B frames detected
You could try creating a new AVI container -- let FFmpeg copy the entire file, eg with:
ffmpeg -i input.avi -vcodec copy -acodec copy output.avi
This should create a new AVI container and copy the data streams. Then try your command again. If it works, you've got broken AVIs (or possibly an FFmpeg bug) -- either way, you can put all your videos into new AVI containers and get it done that way.
If that doesn't work, you might look further into the broken XviDs and see what they have in common.
I wonder if your problem is the same as in this article:
Convert any video file for an iPod or iPhone
You want to use your fancy new Apple iPod Video or Apple iPhone, but you don't know how to convert video so it will play.
Ubuntu 9.10 (Karmic Koala) ships with a version of ffmpeg without libfaac support because of licensing issues. This means you will need to compile ffmpeg yourself. This guide explains how.
The article explains, step-by-step, how to compile ffmpeg by hand or create a modified ffmpeg package, that includes libfaac to support Advanced Audio Coding (AAC).