Opened 12 years ago

Closed 11 years ago

#1460 closed defect (invalid)

x264 artefacts in quicktime player in sequences without motion/still images

Reported by: tbart Owned by:
Priority: normal Component: undetermined
Version: unspecified Keywords: libx264
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:
Certain options (I am unsure which ones really are the problematic ones) lead to problems in Quicktime player in scenes without motion and (possibly?) large solid color areas.. Other players play the video without any artefacts whatsoever.
I think this is a bug in Quicktime Player, but it should be checked and possibly noted somewhere so others can avoid this pitfall.

How to reproduce:

tbart@blackknight /mnt/scratch $ ffmpeg -i artifacts_in_quicktime_player_src.mov -vcodec libx264 -preset slow -crf 25 -an artifacts_in_quicktime_player_dst.mov
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers

built on Jun 15 2012 13:46:42 with gcc 4.5.3
configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --cc=x86_64-pc-linux-gnu-gcc --cxx=x86_64-pc-linux-gnu-g++ --ar=x86_64-pc-linux-gnu-ar --optflags='-O2 -march=core2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -fomit-frame-pointer -pipe' --extra-cflags='-O2 -march=core2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -fomit-frame-pointer -pipe' --extra-cxxflags='-O2 -march=core2 -msse4.1 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144 -fomit-frame-pointer -pipe' --disable-static --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --disable-stripping --disable-debug --disable-doc --disable-network --disable-vaapi --enable-libmp3lame --enable-libvo-aacenc --enable-libtheora --enable-libx264 --enable-libxvid --enable-libaacplus --enable-nonfree --enable-libfaac --enable-nonfree --enable-libdc1394 --enable-openal libavutil 51. 54.100 / 51. 54.100
libavcodec 54. 23.100 / 54. 23.100
libavformat 54. 6.100 / 54. 6.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 77.100 / 2. 77.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'artifacts_in_quicktime_player_src.mov':

Metadata:

major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf54.6.100

Duration: 00:00:22.00, start: 0.000000, bitrate: 25 kb/s

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 550x400 [SAR 16:15 DAR 22:15], 23 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc
Metadata:

handler_name : DataHandler

[buffer @ 0x934f40] w:550 h:400 pixfmt:yuv420p tb:1/25 sar:16/15 sws_param:flags=2
[buffersink @ 0x935220] No opaque field provided
[libx264 @ 0x91ddc0] using SAR=16/15
[libx264 @ 0x91ddc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
[libx264 @ 0x91ddc0] profile High, level 3.0
[libx264 @ 0x91ddc0] 264 - core 120 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - 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=-2 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=25.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mov, to 'artifacts_in_quicktime_player_dst.mov':

Metadata:

major_brand : qt
minor_version : 512
compatible_brands: qt
encoder : Lavf54.6.100
Stream #0:0(eng): Video: h264 (avc1 / 0x31637661), yuv420p, 550x400 [SAR 16:15 DAR 22:15], q=-1--1, 25 tbn, 25 tbc
Metadata:

handler_name : DataHandler

Stream mapping:

Stream #0:0 -> #0:0 (h264 -> libx264)

Press [q] to stop, ? for help
DTS -1, next:-40000 st:0 invalid dropping
frame= 550 fps=131 q=-1.0 Lsize= 89kB time=00:00:21.92 bitrate= 33.4kbits/s
video:86kB audio:0kB global headers:0kB muxing overhead 4.031690%
[libx264 @ 0x91ddc0] frame I:3 Avg QP:13.75 size: 8800
[libx264 @ 0x91ddc0] frame P:506 Avg QP:28.92 size: 109
[libx264 @ 0x91ddc0] frame B:41 Avg QP:29.23 size: 138
[libx264 @ 0x91ddc0] consecutive B-frames: 89.5% 1.5% 1.1% 8.0%
[libx264 @ 0x91ddc0] mb I I16..4: 63.6% 19.2% 17.2%
[libx264 @ 0x91ddc0] mb P I16..4: 0.7% 0.2% 0.0% P16..4: 1.0% 0.2% 0.1% 0.0% 0.0% skip:97.8%
[libx264 @ 0x91ddc0] mb B I16..4: 0.1% 0.0% 0.0% B16..8: 10.9% 0.3% 0.0% direct: 0.1% skip:88.6% L0:31.1% L1:64.1% BI: 4.8%
[libx264 @ 0x91ddc0] 8x8 transform intra:22.9% inter:73.7%
[libx264 @ 0x91ddc0] direct mvs spatial:92.7% temporal:7.3%
[libx264 @ 0x91ddc0] coded y,uvDC,uvAC intra: 17.8% 26.0% 8.6% inter: 0.5% 0.5% 0.0%
[libx264 @ 0x91ddc0] i16 v,h,dc,p: 46% 41% 8% 5%
[libx264 @ 0x91ddc0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 28% 23% 5% 6% 6% 7% 5% 8%
[libx264 @ 0x91ddc0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 18% 23% 18% 5% 7% 7% 8% 6% 8%
[libx264 @ 0x91ddc0] i8c dc,h,v,p: 54% 33% 11% 2%
[libx264 @ 0x91ddc0] Weighted P-Frames: Y:2.4% UV:1.6%
[libx264 @ 0x91ddc0] ref P L0: 64.1% 21.8% 12.2% 0.9% 0.8% 0.3% 0.0%
[libx264 @ 0x91ddc0] ref B L0: 76.3% 16.7% 4.3% 2.7%
[libx264 @ 0x91ddc0] ref B L1: 94.1% 5.9%
[libx264 @ 0x91ddc0] kb/s:31.74

The resulting file shows massive artifacts in every Quicktime Player version I have tested from around 00:00:10 on.
adding rc_lookahead=30 as in

ffmpeg -i artifacts_in_quicktime_player_src.mov -vcodec libx264 -preset slow -crf 25 -x264opts rc_lookahead=30 -an no_artifacts.mov

solves the problem (but I am not sure this is really the culprit..)

This also happens with directly encoding with x264 and muxing with mp4box so I *think* the problem lies within x264 encoding and not muxing - or both ffmpeg and mp4box do the same (bad) thing.

Attachments (3)

artifacts_in_quicktime_player_src.mov (67.2 KB ) - added by tbart 12 years ago.
the source file - plays fine in all players
artifacts_in_quicktime_player_dst.mov (89.4 KB ) - added by tbart 12 years ago.
the encoded file - breaks with quicktime player
artifacts_in_quicktime_player_dst_rc_lookahead_30.mov (88.5 KB ) - added by tbart 12 years ago.
rc_lookahead set to 30 (instead of 40); works in all players

Download all attachments as: .zip

Change History (6)

by tbart, 12 years ago

the source file - plays fine in all players

by tbart, 12 years ago

the encoded file - breaks with quicktime player

by tbart, 12 years ago

rc_lookahead set to 30 (instead of 40); works in all players

comment:1 by Michael Niedermayer, 12 years ago

is this issue ffmpeg+x264 specific or does this also happen with x264 without ffmpeg ?

comment:2 by tbartdev, 12 years ago

as I wrote:
"This also happens with directly encoding with x264 and muxing with mp4box so I *think* the problem lies within x264 encoding and not muxing - or both ffmpeg and mp4box do the same (bad) thing."

(i cannot play raw streams with quicktime player, so I have to mux it into a codec it accepts)

comment:3 by Carl Eugen Hoyos, 11 years ago

Keywords: libx264 added; artifacts still motion quicktime qt player removed
Resolution: invalid
Status: newclosed
Version: 0.11.1unspecified

This does not appear to be a bug in FFmpeg.

Note: See TracTickets for help on using tickets.