Why does the quality of this video suck when converted with ffmpeg as opposed to mencoder?

13
2013-09
  • scompt.com

    screesnshot

    Here's the command line that I'm using for both and the output. Any ideas? The bitrate of the two videos is comparable: both around 1500Kbps.

    ffmpeg command:

    ffmpeg -y -i aud.mp4 -acodec copy -i input.mp4 -ac 2 -vcodec libx264 -s 1280x720 
    -b 1850k -keyint_min 25 -g 250 -deinterlace -coder 1 -trellis 1 -directpred 1
    -b_strategy 1 -bf 3 -refs 3 -subq 5 -me_method hex -me_range 16 
    -partitions +parti8x8+parti4x4+partp8x8+partb8x8 -flags +loop 
    -flags2 +bpyramid+wpred+mixed_refs+dct8x8+fastpskip+mbtree -bufsize 2000k
    -sc_threshold 40 -cmp +chroma -qdiff 4 -qmin 5 -qmax 51 -qcomp 0.6 -i_qfactor 0.71
    -t 0:0:20 -wpredp 2 -r 25 -bt 1500000 output.mp4
    

    ffmpeg output:

    FFmpeg version SVN-r21602, Copyright (c) 2000-2010 Fabrice Bellard, et al.
      built on Feb 24 2010 18:28:53 with gcc 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
      configuration: --prefix=/var/jails/build/ --enable-static --disable-altivec --disable-debug --disable-network --enable-libvorbis --enable-libtheora --enable-libxvid --enable-libx264 --enable-libfaad --enable-libfaac --enable-gpl --disable-ffplay --disable-ffserver --enable-nonfree --enable-avfilter --enable-avfilter-lavf --enable-libmp3lame --enable-pthreads --enable-postproc --disable-shared --enable-static --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-avfilter --enable-avfilter-lavf
      libavutil     50. 8. 0 / 50. 8. 0
      libavcodec    52.51. 0 / 52.51. 0
      libavformat   52.50. 0 / 52.50. 0
      libavdevice   52. 2. 0 / 52. 2. 0
      libavfilter    1.17. 0 /  1.17. 0
      libswscale     0. 9. 0 /  0. 9. 0
      libpostproc   51. 2. 0 / 51. 2. 0
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'bad.aud.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: M4A mp42isomndia
        encoder         : Nero AAC codec / 1.3.3.0
      Duration: 00:07:24.30, start: 0.000000, bitrate: 90 kb/s
        Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 89 kb/s
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x8b6fe10]max_analyze_duration reached
    
    Seems stream 1 codec frame rate differs from container frame rate: 50.00 (50/1) -> 25.00 (25/1)
    Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'bad.mp4':
      Metadata:
        major_brand     : mp42
        minor_version   : 0
        compatible_brands: mp42isomavc1
        encoder         : Sorenson Squeeze 5.0
      Duration: 00:07:24.32, start: 0.000000, bitrate: 910 kb/s
        Stream #1.0(und): Audio: aac, 48000 Hz, stereo, s16, 320 kb/s
        Stream #1.1(und): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 524 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
        Stream #1.2(und): Data: mp4s / 0x7334706D
        Stream #1.3(und): Data: mp4s / 0x7334706D
        Stream #1.4(eng): Data: rtp  / 0x20707472, 23 kb/s
        Stream #1.5(eng): Data: rtp  / 0x20707472, 34 kb/s
    [libx264 @ 0x8bae2c0]using SAR=1/1
    [libx264 @ 0x8bae2c0]using cpu capabilities: MMX2 SSE2 SSE3 Cache64
    [libx264 @ 0x8bae2c0]profile High, level 3.1
    Output #0, mp4, to 'out.mp4':
        Stream #0.0(und): Video: libx264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=5-51, 1850 kb/s, 25 tbn, 25 tbc
        Stream #0.1(und): Audio: aac, 44100 Hz, stereo, 89 kb/s
    Stream mapping:
      Stream #1.1 -> #0.0
      Stream #0.0 -> #0.1
    Press [q] to stop encoding
    frame=  499 fps= 10 q=-1.0 Lsize=    3514kB time=19.92 bitrate=1445.3kbits/s        
    video:3279kB audio:220kB global headers:0kB muxing overhead 0.432718%
    [libx264 @ 0x8bae2c0]frame I:3     Avg QP: 7.77  size: 66763
    [libx264 @ 0x8bae2c0]frame P:208   Avg QP: 6.89  size: 12756
    [libx264 @ 0x8bae2c0]frame B:288   Avg QP:11.95  size:  1748
    [libx264 @ 0x8bae2c0]consecutive B-frames: 22.0%  1.2%  1.8% 75.0%
    [libx264 @ 0x8bae2c0]mb I  I16..4: 66.1% 10.0% 23.9%
    [libx264 @ 0x8bae2c0]mb P  I16..4:  3.1%  1.4%  1.6%  P16..4: 14.5%  2.0%  1.5%  0.0%  0.0%    skip:75.9%
    [libx264 @ 0x8bae2c0]mb B  I16..4:  1.0%  0.6%  0.2%  B16..8:  2.6%  0.2%  0.2%  direct: 5.7%  skip:89.4%  L0:45.2% L1:46.4% BI: 8.4%
    [libx264 @ 0x8bae2c0]8x8 transform intra:23.9% inter:38.3%
    [libx264 @ 0x8bae2c0]coded y,uvDC,uvAC intra: 38.0% 34.2% 18.6% inter: 4.9% 6.7% 2.1%
    [libx264 @ 0x8bae2c0]i16 v,h,dc,p: 59% 34%  4%  3%
    [libx264 @ 0x8bae2c0]i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 35% 28%  2%  2%  2%  2%  2%  3%
    [libx264 @ 0x8bae2c0]i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 26% 35% 15%  4%  4%  5%  4%  4%  4%
    [libx264 @ 0x8bae2c0]Weighted P-Frames: Y:9.1%
    [libx264 @ 0x8bae2c0]ref P L0: 71.5% 18.0%  3.2%  3.5%  3.7%
    [libx264 @ 0x8bae2c0]ref B L0: 90.3%  7.4%  2.3%
    [libx264 @ 0x8bae2c0]ref B L1: 91.5%  8.5%
    [libx264 @ 0x8bae2c0]kb/s:1345.52
    

    MEncoder command:

    mencoder bad.mp4 -oac pcm -ovc x264 -ofps 25.0 -vf scale=1280:720,harddup
    -o out2.mp4 -srate 48000 -endpos 20
    -x264encopts threads=1:bitrate=1850:vbv_bufsize=2000:bframes=3:frameref=3:subq=5:me=hex:b_pyramid=normal:partitions=all 
    

    MEncoder output:

    MEncoder SVN-r30554-4.1.2 (C) 2000-2010 MPlayer Team
    
    WARNING: OUTPUT FILE FORMAT IS _AVI_. See -of help.
    success: format: 0  data: 0x0 - 0x3036dc5
    libavformat file format detected.
    [mov,mp4,m4a,3gp,3g2,mj2 @ 0x8ed2b70]max_analyze_duration reached
    [lavf] Audio stream found, -aid 0
    [lavf] Video stream found, -vid 1
    VIDEO:  [H264]  1280x720  24bpp  25.000 fps  524.0 kbps (64.0 kbyte/s)
    [V] filefmt:44  fourcc:0x34363248  size:1280x720  fps:25.000  ftime:=0.0400
    ==========================================================================
    Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding)
    AUDIO: 48000 Hz, 2 ch, s16le, 320.0 kbit/20.83% (ratio: 40000->192000)
    Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio))
    ==========================================================================
    Opening video filter: [expand osd=1]
    Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
    Opening video filter: [harddup]
    Opening video filter: [scale w=1280 h=720]
    ==========================================================================
    Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
    Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
    ==========================================================================
    Movie-Aspect is 1.78:1 - prescaling to correct movie aspect..000 [0:0]
    [swscaler @ 0x8938400]using unscaled yuv420p -> yuv420p special converter
    x264 [info]: using SAR=1/1
    x264 [info]: using cpu capabilities: MMX2 SSE2 SSE3 Cache64
    x264 [info]: profile High, level 3.1
    New_Face failed. Maybe the font path is wrong.
    Please supply the text font file (~/.mplayer/subfont.ttf).
    subtitle font: load_sub_face failed.
    New_Face failed. Maybe the font path is wrong.
    Please supply the text font file (~/.mplayer/subfont.ttf).
    subtitle font: load_sub_face failed.
    Writing header...1f ( 2%)  0.00fps Trem:   0min   0mb  A-V:0.044 [0:0]]
    ODML: vprp aspect is 16:9.
    Setting audio delay to 0.080s.
    Writing header...
    ODML: vprp aspect is 16:9.
    Setting audio delay to 0.080s.
    Pos:  20.0s    542f ( 8%) 10.06fps Trem:  10min  79mb  A-V:0.053 [1144:1536]
    Flushing video frames.
    Writing index...
    Writing header...
    ODML: vprp aspect is 16:9.
    Setting audio delay to 0.080s.
    
    Video stream: 1063.410 kbit/s  (132926 B/s)  size: 2876525 bytes  21.640 secs  542 frames
    
    Audio stream: 1536.000 kbit/s  (192000 B/s)  size: 3840000 bytes  20.000 secs
    x264 [info]: frame I:3     Avg QP:10.62  size:106222
    x264 [info]: frame P:216   Avg QP:10.67  size:  9236
    x264 [info]: frame B:322   Avg QP:13.29  size:  1748
    x264 [info]: consecutive B-frames: 19.7%  0.7%  2.2% 77.3%
    x264 [info]: mb I  I16..4: 58.7%  8.0% 33.3%
    x264 [info]: mb P  I16..4:  2.8%  1.4%  1.3%  P16..4: 12.8%  1.6%  1.0%  0.2%  0.2%    skip:78.7%
    x264 [info]: mb B  I16..4:  0.7%  0.6%  0.2%  B16..8:  2.4%  0.3%  0.2%  direct: 6.7%  skip:88.9%  L0:44.3% L1:47.1% BI: 8.5%
    x264 [info]: 8x8 transform intra:26.2% inter:52.8%
    x264 [info]: coded y,uvDC,uvAC intra: 38.7% 35.5% 16.8% inter: 3.9% 6.7% 1.0%
    x264 [info]: i16 v,h,dc,p: 56% 37%  4%  4%
    x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 25% 33% 29%  2%  2%  2%  2%  2%  3%
    x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 27% 33% 16%  4%  4%  5%  4%  4%  4%
    x264 [info]: Weighted P-Frames: Y:8.8%
    x264 [info]: ref P L0: 69.0% 20.1%  3.6%  3.3%  4.0%
    x264 [info]: ref B L0: 91.5%  6.9%  1.6%
    x264 [info]: ref B L1: 95.0%  5.0%
    x264 [info]: kb/s:1063.41
    
  • Answers
  • scompt.com

    I'm an idiot. The video is non-interlaced and I was passing the -deinterlace flag to ffmpeg. This was the source of the artifacts.


  • Related Question

    ubuntu - FFMPEG Segfault Solutions
  • Brentley_11

    I'm trying to convert a bunch of movies into h.264 mp4's using FFMPEG. These movies are sourced from various portable camcorders such as the Flip Mino HD and the Kodak ZI8. One issue I'm having with video from the ZI8 is it seems to be causing FFMPEG to segfault.

    Here is my command:

    ffmpeg -i 'XmasSailor720p60fps.MOV' -threads 2 -acodec libfaac -ab 96kb -vcodec libx264 -vpre hq -b 500kb -s 484x272 XmasSailor.mp4
    

    Here is the output:

    FFmpeg version SVN-r20668, Copyright (c) 2000-2009 Fabrice Bellard, et al.
      built on Dec  2 2009 18:37:34 with gcc 4.2.4 (Ubuntu 4.2.4-1ubuntu4)
      configuration: --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared
      libavutil     50. 5. 1 / 50. 5. 1
      libavcodec    52.42. 0 / 52.42. 0
      libavformat   52.39. 2 / 52.39. 2
      libavdevice   52. 2. 0 / 52. 2. 0
      libswscale     0. 7. 2 /  0. 7. 2
      libpostproc   51. 2. 0 / 51. 2. 0
    
    Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (30000/1001)
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'XmasSailor720p60fps.MOV':
      Duration: 00:00:05.37, start: 0.000000, bitrate: 12021 kb/s
        Stream #0.0(eng): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 11994 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
        Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s
      Metadata
        major_brand     : qt  
        minor_version   : 0
        compatible_brands: qt  
        comment         : KODAK Zi8 Pocket Video Camera
        comment-eng     : KODAK Zi8 Pocket Video Camera
    [libx264 @ 0x99e1020]using SAR=1/1
    [libx264 @ 0x99e1020]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
    [libx264 @ 0x99e1020]profile High, level 2.1
    Output #0, mp4, to 'XmasSailor.mp4':
        Stream #0.0(eng): Video: libx264, yuv420p, 484x272 [PAR 1:1 DAR 121:68], q=10-51, 500 kb/s, 30k tbn, 29.97 tbc
        Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 96 kb/s
      Metadata
        comment         : Encoded with the Statusfirm Video Transcoder
    Stream mapping:
      Stream #0.0 -> #0.0
      Stream #0.1 -> #0.1
    Press [q] to stop encoding
    [h264 @ 0x99de950]B picture before any references, skipping
    [h264 @ 0x99de950]decode_slice_header error
    [h264 @ 0x99de950]no frame!
    Error while decoding stream #0.0
    [h264 @ 0x99de950]B picture before any references, skipping
    [h264 @ 0x99de950]decode_slice_header error
    [h264 @ 0x99de950]no frame!
    Error while decoding stream #0.0
    frame=   20 fps=  0 q=13797729.0 size=       0kB time=0.66 bitrate=   0.6kbits/s    
    frame=   39 fps= 37 q=13797729.0 size=       0kB time=1.30 bitrate=   0.3kbits/s    
    frame=   48 fps= 30 q=33.0 size=      11kB time=0.10 bitrate= 903.0kbits/s    
    frame=   58 fps= 27 q=31.0 size=      22kB time=0.43 bitrate= 421.0kbits/s    
    frame=   67 fps= 25 q=29.0 size=      41kB time=0.73 bitrate= 462.6kbits/s    
    frame=   75 fps= 23 q=29.0 size=      59kB time=1.00 bitrate= 486.7kbits/s    
    frame=   83 fps= 22 q=29.0 size=      81kB time=1.27 bitrate= 521.9kbits/s    
    frame=   90 fps= 21 q=29.0 size=      97kB time=1.50 bitrate= 530.1kbits/s    
    frame=   98 fps= 20 q=29.0 size=     114kB time=1.77 bitrate= 526.9kbits/s    
    frame=  106 fps= 20 q=29.0 size=     134kB time=2.04 bitrate= 537.7kbits/s    
    frame=  114 fps= 19 q=29.0 size=     150kB time=2.30 bitrate= 533.7kbits/s    
    frame=  122 fps= 19 q=29.0 size=     172kB time=2.57 bitrate= 547.8kbits/s    
    frame=  130 fps= 19 q=29.0 size=     193kB time=2.84 bitrate= 557.5kbits/s    
    frame=  136 fps= 18 q=29.0 size=     211kB time=3.04 bitrate= 570.0kbits/s    
    frame=  144 fps= 18 q=29.0 size=     242kB time=3.30 bitrate= 599.5kbits/s    
    frame=  152 fps= 17 q=30.0 size=     261kB time=3.57 bitrate= 598.6kbits/s    
    frame=  157 fps= 15 q=-1.0 Lsize=     368kB time=5.21 bitrate= 579.3kbits/s    
    video:302kB audio:61kB global headers:0kB muxing overhead 1.416371%
    [libx264 @ 0x99e1020]frame I:1     Avg QP:27.22  size:  8720
    [libx264 @ 0x99e1020]frame P:48    Avg QP:25.15  size:  3759
    [libx264 @ 0x99e1020]frame B:108   Avg QP:30.10  size:  1105
    [libx264 @ 0x99e1020]consecutive B-frames:  0.6% 11.5% 28.8% 59.0%
    [libx264 @ 0x99e1020]mb I  I16..4: 28.5% 47.6% 23.9%
    [libx264 @ 0x99e1020]mb P  I16..4:  0.8%  1.3%  0.5%  P16..4: 50.6% 17.7% 13.1%  0.0%  0.0%    skip:15.9%
    [libx264 @ 0x99e1020]mb B  I16..4:  0.2%  0.3%  0.1%  B16..8: 44.0%  1.2%  2.6%  direct: 5.1%  skip:46.5%  L0:45.5% L1:51.0% BI: 3.5%
    [libx264 @ 0x99e1020]final ratefactor: 23.51
    [libx264 @ 0x99e1020]8x8 transform intra:49.9% inter:67.9%
    [libx264 @ 0x99e1020]direct mvs  spatial:98.1% temporal:1.9%
    [libx264 @ 0x99e1020]coded y,uvDC,uvAC intra: 54.7% 76.1% 41.4% inter: 17.1% 24.4% 7.8%
    [libx264 @ 0x99e1020]i16 v,h,dc,p: 18% 52%  5% 25%
    [libx264 @ 0x99e1020]i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 12% 22%  9%  7% 10% 10%  9%  8% 13%
    [libx264 @ 0x99e1020]i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 13% 18%  8%  8% 10% 13% 10%  9% 12%
    [libx264 @ 0x99e1020]Weighted P-Frames: Y:10.4%
    [libx264 @ 0x99e1020]ref P L0: 60.2% 15.3% 11.0%  7.6%  5.2%  0.7%
    [libx264 @ 0x99e1020]ref B L0: 72.6% 15.6% 11.8%
    [libx264 @ 0x99e1020]kb/s:471.17
    Segmentation fault
    

    I'm wondering if anyone else has ran into similar issues. I wasn't able to find anything helpful via Google.

    Another question I have is if anyone knows of a company that offers paid support for FFMPEG.

    Thank you for your time.


  • Related Answers
  • SleighBoy

    I just had a similar issue with libx264 encoding, and what I got from my examination of the matter were these points.

    1. Use gcc >= 4.2
    2. Make sure your ffmpeg is compiled against the same libx264 version

    By your output it is obvious you have #1 down, so check #2 like so (paths may need to be modified)

    ldd /usr/bin/ffmpeg | grep x264
    

    and then...

    cat /usr/include/x264.h | grep X264_BUILD
    

    (Source)

    For me, this checked out and I just had to not do 2-pass encoding. Try also not using the thread option, that will probably fix it. I had troubles on old Red Hat boxes, my Gentoo desktop had no trouble at all, I call that a win for from-source package managers!