简体   繁体   中英

avconv Video flipping is taking long time, How can we reduce the process time?

I am trying to flip video using avconv on Ubuntu. When it flips 1 minute video, it takes 12 to 40 seconds for processing and conversion.

Video file size : 7mb, Duration : 1 minute

avconv -i 1_1.mp4 -c:v libx264 -c:a copy -vf "vflip" conv.mp4

and the result is:

avconv version 0.8.12-4:0.8.12-0ubuntu0.12.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Jun 10 2014 15:32:44 with gcc 4.6.3
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1_1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2013-06-06 07:42:07
  Duration: 00:03:45.15, start: 0.000000, bitrate: 266 kb/s
    Stream #0.0(eng): Video: h264 (High), yuv420p, 640x360 [PAR 1:1 DAR 16:9], 216 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc
    Metadata:
      creation_time   : 2013-06-06 07:42:07
    Stream #0.1(eng): Audio: aac, 32000 Hz, mono, s16, 46 kb/s
    Metadata:
      creation_time   : 2013-06-06 07:42:07
[buffer @ 0x972c240] w:640 h:360 pixfmt:yuv420p
[libx264 @ 0x9745e20] using SAR=1/1
[libx264 @ 0x9745e20] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x9745e20] profile Main, level 3.0
[libx264 @ 0x9745e20] 264 - core 120 r2151 a3f4407 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=0 b_adapt=1 b_bias=0 direct=1 weightb=0 open_gop=1 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.25 aq=1:1.00
Output #0, mp4, to 'conv.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2013-06-06 07:42:07
    encoder         : Lavf53.21.1
    Stream #0.0(eng): Video: libx264, yuv420p, 640x360 [PAR 1:1 DAR 16:9], q=-1--1, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 2013-06-06 07:42:07
    Stream #0.1(eng): Audio: libvo_aacenc, 32000 Hz, mono, 46 kb/s
    Metadata:
      creation_time   : 2013-06-06 07:42:07
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> libx264)
  Stream #0:1 -> #0:1 (copy)
Press ctrl-c to stop encoding
frame= 5627 fps=153 q=-1.0 Lsize=    7880kB time=225.04 bitrate= 286.9kbits/s    
video:6487kB audio:1271kB global headers:0kB muxing overhead 1.580010%
[libx264 @ 0x9745e20] frame I:27    Avg QP:15.59  size: 19598
[libx264 @ 0x9745e20] frame P:1478  Avg QP:20.11  size:  3175
[libx264 @ 0x9745e20] frame B:4122  Avg QP:29.13  size:   344
[libx264 @ 0x9745e20] consecutive B-frames:  1.9%  0.5%  2.1% 95.5%
[libx264 @ 0x9745e20] mb I  I16..4: 20.1%  0.0% 79.9%
[libx264 @ 0x9745e20] mb P  I16..4:  1.2%  0.0%  1.7%  P16..4: 23.9% 12.3%  5.6%  0.0%  0.0%    skip:55.2%
[libx264 @ 0x9745e20] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 18.4%  2.3%  0.2%  direct: 0.3%  skip:78.8%  L0:41.7% L1:51.7% BI: 6.6%
[libx264 @ 0x9745e20] coded y,uvDC,uvAC intra: 64.4% 44.0% 15.7% inter: 4.3% 4.8% 0.2%
[libx264 @ 0x9745e20] i16 v,h,dc,p: 40% 19% 13% 28%
[libx264 @ 0x9745e20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 29% 22% 17%  5%  7%  6%  6%  5%  4%
[libx264 @ 0x9745e20] i8c dc,h,v,p: 65% 13% 19%  3%
[libx264 @ 0x9745e20] Weighted P-Frames: Y:1.9% UV:1.2%
[libx264 @ 0x9745e20] ref P L0: 72.8%  7.2% 13.5%  6.4%  0.0%
[libx264 @ 0x9745e20] ref B L0: 91.2%  8.8%
[libx264 @ 0x9745e20] kb/s:236.07

And time taken is 13 seconds.

You are approaching the problem from the wrong angle. The size of the file is not the problem here. In order to run vflip the avconv must do the following:

 ┌──────────┐         ┌──────────┐         ┌────────────┐
 │ Decode a │⇨⇨⇨⇨⇨⇨⇨⇨ │ Run vlip │         │  Reencode  │
 │  frame   │         │  filter  │⇨⇨⇨⇨⇨⇨⇨⇨ │ the  frame │
 └──────────┘         └──────────┘         └────────────┘

So you cannot approach the question by asking "How long can the rotation of 7MiB file take?" but rather "How long does it take to decode every frame, rotate it, and reencode it back again?"

13 seconds is not as horrible as you may think. You have 5627 frames 640x360 in size. Try to create this many pictures and see how long some other application will take to flip them upside down. My guess would be that it'll take a good part of 13 seconds. The rest of the time your avconv is busy doing decoding and reencoding.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM