为什么使用 ffmpeg 而不是 mencoder 转换时该视频的质量很差?

为什么使用 ffmpeg 而不是 mencoder 转换时该视频的质量很差?

截屏

这是我用于两者的命令行和输出。有什么想法吗?两个视频的比特率相当:都在 1500Kbps 左右。

ffmpeg 命令:

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 输出:

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 命令:

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 输出:

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

答案1

我是个白痴。视频是非隔行扫描的,我正在将标志传递-deinterlace给 ffmpeg。这就是伪影的来源。

相关内容