简体   繁体   English

avconv视频翻转需要很长时间,如何减少处理时间?

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

I am trying to flip video using avconv on Ubuntu. 我正在尝试在Ubuntu上使用avconv翻转视频。 When it flips 1 minute video, it takes 12 to 40 seconds for processing and conversion. 翻转1分钟的视频时,需要12到40秒的时间进行处理和转换。

Video file size : 7mb, Duration : 1 minute 视频文件大小:7mb,时长:1分钟

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. 花费的时间是13秒。

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: 为了运行vflipavconv必须执行以下操作:

 ┌──────────┐         ┌──────────┐         ┌────────────┐
 │ 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?" 因此,您不能通过问“ 7MiB文件的旋转需要多长时间?”来解决这个问题。 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. 13秒并不像您想象的那么可怕。 You have 5627 frames 640x360 in size. 您有640x360尺寸的5627帧。 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. 我的猜测是这将花费13秒的大部分时间。 The rest of the time your avconv is busy doing decoding and reencoding. 其余时间, avconv会忙于解码和重新编码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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